• image01
  • image02
  • image03
  • Web-mir.com 

    Как сделать ЧПУ самому с помощью htaccess?

    Сделать ЧПУ не такое уж и сложное дело, главное понять: что и как, куда писать. Приходит время и каждый начинающий вебмастер задумывается о оптимизации сайта заходит в Яндекс и вводит «Как  оптимизировать сайт?» или смотрит рекомендации Яндекса или Гугла и обнаруживает что ссылки на его сайте должны выглядеть так:

    http://домен-сайта/category4/page2/post71.html

    Называется это человеко-понятные url или человеко понятные урлы(отсюда и аббревиатура ЧПУ).

    А выглядят так:

    http://домен-сайта/view_zam.php?cat=news&page=2&id=71

    И самим собой напрашивается вопрос что с этим всем делать?

         Для того этого и не только, существует файл htaccess и модуль сервера Apache «mod_rewrite».

    Ну а теперь поэтапно:

    1)Первая строчка отвечает за включение модуля и выглядит вот так:

    RewriteEngine On

    2)Добавляем две строчки чтобы не попортить пути к файлам (флаг –f тобиш file) и папкам (флаг –d тобиш directory).

         RewriteCond %{REQUEST_FILENAME} !-f

         RewriteCond %{REQUEST_FILENAME} !-d

    Это два правила которые проверяют: «Если это не файл и не папка, то делай с адресом че хочь : )»

    3)Добавляем 3 правила какую часть ссылки каким GET запросом отправлять.

    RewriteRule ^([a-z]+)$ view_zam.php?cat=$1 [L]

    RewriteRule^([a-z]+)/([0-9]+)$ view_zam.php?cat=$1&page=$2 [L]

    RewriteRule^([a-z]+)/([0-9]+)/post([0-9]+).html$index.php?cat=$1& podcat=$2&stat=$3 [L]

    Первое - если будет введен адрес:http://домен-сайта/news

    на сервер отправится запрос: http://домен-сайта/view_zam.php?cat=news

    ^([a-z]+) означает выбрать символы после адреса сайта до слеша

    После $ вторая часть где вместо $1 подставляется выбранная часть адреса.

    [L] – означает, что остальные правила игнорируются.

    Второе - если будет введен адрес:http://домен-сайта/news/2

    на сервер отправится запрос:

    http://домен-сайта/view_zam.php?cat=news&page=2

    ^([a-z]+)/([0-9]+) – означает что сначала выбираем текст из первой части ссылки потом выбираем цифры из второй и отправляем в виде параметров сначала вместо $1 потом $2.

    В третьем правиле для третьего параметра используется такая запись: /post([0-9]+).html это как раз концовка нашего адреса:

    http://домен-сайта/category4/page2/post71.html

    Опять-же выбираются только число которое находится между post и .html

         Важно!!! Я сразу сам не въехал, теперь в файлах где у вас прописаны ссылки с GET параметрами все нужно привести в такой вид:

    http://домен-сайта/category4/page2/post71.html

    Ссылки типа http://домен-сайта/view_zam.php?cat=news&page=2&id=71

    мод_реврайт не увидит. Ибо он сам берет нормальные ссылки и разбивает на параметры GET – запросов и отправляет эти параметры на сервер.

    Спасибо за внимание надеюсь, мое изложение было понятным, если что не так звиняйте, пишите комментарии, комментариям буду рад и приму во внимание.

    Читать далее