от SaS и MOMCHE(14-01-2002)

рейтинг (-7)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Често се говори за оптимизиране на сайтове за по-лесна индексация от търсещи машини. Това означава съобразяване на конструкцията на сайт със особеностите на работа на търсещите машини. Подчертавам повечето, защото съществува разминаване във индексиращите им алгоритми и е невъзможно да се удовлетворят едновременно добре всички критерии. Когато сайта, който управлявате се състои от динамично изменяща се информация и се използват програмни скриптове адресите на динамично генерираните страници са от типа:

http://www.simetro.com/books/book.php?theme=dreams&design=1

Текста след знака "?" има смисъл на параметри от, които зависи какво ще се покаже във браузъра. Това се явява и една от основните пречки при обхождане на такъв сайт от търсеща машина. Търсещите машини отказват да индексират URL след знака "?". Защо? Едва ли може да се намери еднозначен отговор, но важното е, че това е така и ако искаме страниците скрити зад "?" да бъдат известни на "търсачката" трябва допълнителна намеса. Има редица начини за избягване на този конфликт: генериране на статични страници от динамичните скриптове, пренасочване на всяко обръщение към сървъра към скрипт, който обработва поискания URL и отговаря по адекватен начин, пренаписване на поискания нереален URL от сървъра до нов реален.
Метода с пренасочване на всички заявки към един единствен скрипт, който решава как да продължи изпълнението е свързано с доста голямо допълнително натоварване на машината на, която се хоства сайта. Това е твърде нежелателно за машини, които имат от няколко десетки до стотици потребители сърфиращи едновременно на сайта.
Много по-елегантен и бърз начин е пренаписване на фиктивен, нереален URL с помощта на модула на Apache server mod_rewrite. Алгоритъма на работа на този метод е свързан с обработка на поискания URL според зададен регулярен израз. Възможно е извикването на регулярен израз след изпълнение на определено условие, както и зацикляне на списъка от пренаписващи правила докато се постигне търсен резултат. Адрес от типa:

http://www.simetro.com/books/book_php/theme/dreams/design/1 (1)

може да бъде пренаписан до:

http://www.simetro.com/books/book.php?theme=dreams&design=1 (2)

Смисъла на това пренаписване е, че URL (1) има смисъл на директорийна структура и търсачката ще успее да го индексира без да е обезпокоена от символ "?". В този случай вашия сайт запазва същата си структура, единствената разлика е че хипервръзките се налага да се пренапишат така, че да отговарят на алгоритъма за съставяне на новия тип URL.
Ето и кратък пример на това какво представлява правилото за горното пренаписване:


# Включва машината за пренаписване на URL
RewriteEngine On


# Добавя знака ?
RewriteRule (.+)_php/([^/]*)$      $1\.php\?$2

# Когато има повече от един параметър
RewriteCond $4 !=""
RewriteRule (.+)_php/([^/]+)/([^/]+)[/&](.*)$      $1_php/$4&$2=$3

# В случай, че има само един параметър
RewriteCond $4 =""
RewriteRule (.+)_php/([^/]+)/([^/]+)[/&]?(.*)$      $1_php/$2=$3


За да може да работи това правило ще е добре да се уверите че имате Apache server с mod_rewrite поддръжка.
Правилото за пренаписване може да бъде сложено във главния конфигурационен файл на Apache server httpd.conf или във .htaccess файл. За предпочитане е поставянето в httpd.conf файла, защото пренаписването става при обръщение към сървъра. Ако правилото е поставено в .htaccess файл се губи повече време, защото сървъра вече е обработил заявката и когато провери какво пише във .htaccess файла се налага повторно връщане за повторна обработка на заявката.

Пример за сайт работещ с пренаписани URL адреси е http://simetro.com/books/

Повече информация за mod_rewrite може да намерите в официалната документация за модула на сайта на Apache на адрес: http://httpd.apache.org/docs/mod/mod_rewrite.html
Много интересни примери и решение на базата на пренаписване на адреси има на: http://www.engelschall.com/pw/apache/rewriteguide/

Успешна работа.

SaS и MOMCHE



<< Постоянен поддомейн за dial-up с динамичен IP-адрес... | Как да си направим IR-управление за програмите в LINUX - II >>