SEO-frienly URL на PHP с использованием .htaccess
Коротко о том как создавать динамические сайты с дружественными URL-адресами на PHP с ипользованием htaccess + поисковая оптимизация.
SEO-frienly URL в .htaccess
.htaccess это локальный конфигурационный файл вебсервера Apache. Он размещается в корневой папке сайта и служит дополнением к общим настройкам сервера. Для создания дружественных URL-адресов в него добавляется ряд опций перенаправления запросов, производимых модулем mod_rewrite.c:
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?u=$1 [L,QSA] </IfModule>
Разберём приведённые опции подробнее:
- RewriteEngine on — включает механизм перенаправления запросов модуля mod_rewrite.c
- RewriteCond %{REQUEST_FILENAME} !-f — исключает из правил переадресации физически существующие файлы.
- RewriteCond %{REQUEST_FILENAME} !-d — исключает из правил переадресации физически существующие директории.
- RewriteRule ^(.*)$ index.php?friendly_url=$1 [L,QSA] — перенаправление всех запросов на файл index.php, чей параметр friendly_url будет содержать идущий после домена запрашиваемый путь.
Разберём последнюю опцию RewriteRule подробнее. Она содержит два параметра и группу флагов. Первый параметр определяет регулярное выражение шаблона запрашиваемого URL-адреса, второй — файл назначения. Флаг L — останавливает процесс обработки правил перенаправления при наличии подходящего шаблону правила, а QSA — позволяет передавать файлу назначения параметры заданные в URL. Например, по запросу:
kadabrus.ru/cat?q=wolf
файл назначения получится следующим:
index.php?friendly_url=cat&q=wolf
В то время как без QSA мы бы получили лишь:
index.php?friendly_url=cat
SEO-frienly URL в PHP
Исходя из выше изложенного примера, обработчиком запросов является файл index.php, например:
<?php $friendly_url = trim((string) $_GET['friendly_url'], '/'); $inc_name = '404'; if( empty($friendly_url) ){ $inc_name = 'index'; } elseif($friendly_url == 'about' ){ $inc_name = 'login'; } $inc_file = $ops['abs'] . DIRECTORY_SEPARATOR .'inc/mod_'. DIRECTORY_SEPARATOR . '.php'; if( !file_exists($inc_file) ) die('Module '. $inc_name .' not exists.'); include_once($inc_file);
Здесь полученное значение параметра friendly_url преобразуется в строку с «обрезанием» по краям возможного символа «/». Делается это для удобства дальнейшей опработки. Далее задаётся модуль по умолчанию — 404 (страница не найдена). Если $friendly_url пуст, это главная страница, если иное значение, то подбираем соответствующий модуль. Название модуля $inc_name определяет подключаемых файл $inc_file. Ну а дальше дело техники.
SEO-frienly URL
Поисковые системы отдают предпочтение статическим веб-страницам. Как это реализовать на PHP с использованием .htaccess вы уже знаете. Осталось лишь привести несколько рекомендаций по SEO-frienly URL:
- поддерживайте чёткую структуру сайта;
- структура URL сайта должна быть по возможности простой;
- попробуйте упорядочить контент так, чтобы URL был понятен человеку;
- по возможности используйте в URL слова, а не цифровые идентификаторы;
- используйте в URL знаки препинания, лучше всего знак минус (-), а не символ подчеркивания (_);
- не увлекайтесь SEO-frienly URL, чтобы не получить полностью и почти дублирующий контент (например, при использовании фильтров списков);
- не забывайте блокировать служебные URL в robots.txt и/или добавлять rel=nofollow в их содержащих ссылках (например, страницы результатов поиска);
- убедитесь, что все URL работают правильно.
Подробней об этом читайте в рекомендациях для вебмастеров от Google, Яндекс, прочее.