URL rewriting для чайников (Часть 1)

Очень многие избегают настройки этих правил и на то есть причины, главная из них — одна ошибка и сайт не доступен полностью.

Можно переписать цитату Мэрилин Монро под тематику URL rewriting:

«Если вы не можете справиться со мной, когда я плохо выгляжу, то просто перепишите правила и получите 500 ошибку сервера».

При создании сайта любой сложности приходится сталкиваться с настройкой URL, чтобы сделать адреса страниц сайта понятными человеку и вкусными для поисковой системы. В этой статье я попытаюсь разобраться в настройке правил URL rewriting от начала и до…. середины (до конца, боюсь не справлюсь).

Когда мы говорим о настройке ЧПУ (человеко понятный урл или URL rewriting), мы подразумеваем написание неких правил в файл .htaccess в директории с сайтом. На данный момент, большинство серверов работают на Apache, поэтому в данной статье я буду придерживаться правил для этого веб сервера. Если на вашем хостинге установлен веб сервер nginx, то обычные правила mod_rewrite от Apache вам не подойдут. Для адаптации под Nginx я рекомендую использовать вот этот конвертер.

В данной статье я не опишу всех возможных проблем, которые у вас могли случаться при работе с настройкой ЧПУ. Я постараюсь дать некоторое разяснения, которые помогут вам в настройке и в избегании 500 ошибки сервера. Приступим.

Основы URL rewriting

Правила перезаписи (ЧПУ, URL rewriting) являются частью конфигурации веб сервера Apache для сайта и могут быть размещены в нескольких местах. В конфигурационном файле настроек виртуального хоста (httpd.conf) или в файле .htaccess в корневой папке вашего сайта. Наиболее простой и распространенный способ настройки — запись правил в файл .htaccess . При условии что у вас установлен и включен на веб-сервере модуль mod_rewrite, все что вам нужно сделать, чтобы приступить к настройке правил, написать в файл .htaccess следующую строчку:

RewriteEngine on

Основная формула для правил настройки выглядит таким образом:

RewriteRule URL/что/ищем URL/что/делаем/если/нашли [опции]

Когда мы говорим о настройке URL rewriting, мы подразумеваем одно из двух направлений: переадресация браузера на другой УРЛ, или переписывание самого адреса для улучшения вида УРЛ. Рассмотрим оба варианта по порядку.

Переадресация

Переадресация — перенаправление одного УРЛ адреса на другой. Переадресация может быть полезна для поддержания устаревших адресов. Допустим вы поменяли структуру сайта, чтобы пользователь заходя по устаревшему адресу (из закладок или из поисковой системы, или по ссылке оставленной вами где-нибудь) не попал на страницу с ошибкой 404 (страница не найдена), вы можете перенаправить URL старой страницы на новую. Соответственно, пользователь получит ту информацию, которую искал.

В 1998 году господин, или как принято называть англичан, сэр Тим Бернес-Ли написал статью «Хороший адрес не должен меняться» (Cool URIs don`t change), призывая всех нас сделать небольшую дополнительную работу, чтобы убедиться, что старые ссылки будут работать вечно. Я думаю это замечательно — поправить плохой УРЛ адрес и не потерять трафик. Переадресация, как раз в этом и помогает.

URL rewriting правило выглядит следующим образом:

RewriteRule ^статья/находилась/по/такому/адресу.php$ /статья/теперь/находится/здесь/ [R=301,L]

Перезапись

По умолчанию, особенно в случае со статическими сайтами, адрес страницы тесно связан с расположением файла в директории домена. Если сервер получает запрос к странице http://example.com/istorii/istoriya-o-elkah.html, то сначала он идет к настроенной папке для сайта example.com, затем переходит в директорию /istorii и возвращает файл istoriya-o-elkah.html из нее. Правило перезаписи изменяет этот процесс, нарушая прямую связь между URL адресом и файловой системой. «Если сервер получает запрос к странице http://example.com/istorii/istoriya-o-elkah.html» правило перезаписи может сказать серверу использовать файл «http://example.com/kategorii-s-istoriyami.php».

Это открывает огромное пространство для редактирования структуры УРЛ адресов. Большинство MVC фреймворков, зачастую имеют только одно правило перенаправления, переадресуя все страницы на какой либо один файл. Этот файл — скрипт, динамически генерирующий отображаемый пользователю контент.

Выглядит данное правило URL rewriting так:

RewriteRule ^for/this/url/$ /use/this/file.php [L]

URL rewriting для чайников (Часть 1): 1 комментарий

  1. аппарат Веня

    На позапрошлой неделе Я победил в этом современный алгоритм

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *