Осмысленные линки и mod_rewrite.
Ссылки… В Seo это слово, пожалуй, одно из самых популярных. Все за ними гоняются, все на них равняются. И все хотят хорошие ссылки! И я хочу, и вы, уверен, тоже хотите.
Нет. Данная статья не про то, как нахаляву получить 100 линков с pr10. Я хочу рассказать, как получить ссылки в прекрасном виде. Чтобы каждому захотелось по ним щелкнуть.
Для начала, определимся, что url бывают динамические и статические.
Вот пример статического url:
http://www.site.com/page.html.
Все просто и понятно.
А это уже динамический url:
http://www.site.com/index.php?page=1&category=5
Выглядит он не очень красиво, по сравнению с первым вариантом. Но проблема не только в отсутствии эстетичности. Поисковики не очень любят такие url.
Во-первых, поисковик может “обнаружить” у вас дублированный контент, вследствие манипуляций с параметрами адресной строки, и при большом количестве таких недоразумений ваш сайт могут принять за источник спама и оштрафовать. Или попросту не проиндексировать данную страницу, особенно если url будет содержать много параметров.
Но и о пользователях не надо забывать. Они скорее выберут url, который выглядит более красиво и понятно, нежели набор вопросов и странных параметров.
Ну, что-то я говорю и говорю. Давайте перейдем к делу. Если вы следовали моим советам по выбору сервера и установили Денвер, то mod_rewrite у вас уже есть. Зайдите в httpd.conf и найдите там строчку
LoadModule rewrite_module modules/mod_rewrite.so
Если перед ней стоит символ #, то вам надо его убрать. Тем самым apache будет подгружать модуль при запуске.
В чём же суть этого mod_rewrite. С его помощью можно задать правила, которые будут преобразовывать релевантную адресную строку, введенную пользователем в строку, которую уже будет обрабатывать php сценарий.
Чтобы начать работу, создайте в корне папки (у меня она называется rewrite) тестируемого сайта файл .htaccess и разместите в нём следующий код:
RewriteEngine On
RewriteRule ^my_page\.html$ /rewrite/index.php?status=555
Обратите внимание, если скрипт у вас лежит в папке localhost/www/script, то её надо указать, как я указал /rewrite… так как apache будет по умолчанию искать её в корне папки /www/
Затем в index.php поместите следующее:
Теперь введите в адресную строку http://localhost/rewrite/my_page.html
И вы будете приятно удивлены
Строчка
RewriteEngine On
Разрешает работу механизма mod_rewrite.
Вторая устанавливает правило подмены, которое как вы уже поняли, строится на регулярных выражениях. Не зря я и писал о них
Теперь усложним задачу.
Представим, что на сайте 1000 страниц
index.php?page_id=1
index.php?page_id=2
И надо привести их в вид
a1.html
a2.html
Не писать же для каждой страницы отдельное правило?
Естественно нет, можно сделать только один шаблон.
Исправьте правило следующим образом
RewriteEngine On
RewriteRule ^a([0-9]*)\.html$ /rewrite/index.php?status=$1
И index.php
RewriteRule ^a([0-9]*)\.html$ /rewrite/index.php?status=$1
В данном случае шаблон преобразовывает адресную строку вида
aX.html в index.php?status=X
На этом примере возможности mod_rewrite я хочу пока остановиться, так как такую сложную и обширную тему за раз понять невозможно. Как изучу остальные приёмы, обязательно напишу