Использование Apache-»фишек» mod_rewrite и htaccess считается чем-то недостижимым среди многих разочаровавшихся веб-мастеров, однако это одна из наиболее сложных задач, с которыми встречаются практически все веб-разработчики.

Хочу предложить вам простое решение вместо поиска более сложных для того, чтобы понять как работают mod_rewrite и htaccess. Большинство примеров использования, приведённые в этой статье могут быть просто скопированы и выгружены на ваш веб-сервер.

Чтобы не повторять одно и то же сотням других вебмастеров, я решил просто создать эту страницу-подсказку для всеобщего пользования.

Повторюсь, htaccess – это конфигурационный файл, который позволяет управлять веб-сервером Apache, mod_rewrite – это движок перезаписи, с помощью которого веб-сервер может модифицировать URL при их загрузке.

Файл htaccess – это текстовый файл, который имеет название .htaccess. Можно даже сказать, что это файл, состоящий только из расширения, потому как не содержит именной части (до символа «точка»). Обычно этот файл расположен в основной корневой директории вашего сервера, но вы также можете создавать отдельные файлы htaccess для различных директорий на своем сайте.

Канонизация

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

Множество веб-мастеров страдают от не очень хорошего ранжирования в поисковых системах из-за того, что существуют несколько версий URL домашней страницы, например:

http://www.site.com

http://site.com

http://www.site.com/index.html

http://site.com/index.html

Эти страницы выглядят как различные URL, несмотря на то, что они указывают на одно и то же содержание. Google в конечном итоге решит, какая из версий более правильная, но может пройти немало времени, а вы за это время можете поиметь лишние проблемы.

Чтобы решить эту проблему, просто добавьте следующие строки в свой htaccess-файл:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^site.com
RewriteRule (.*) http://www.site.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.site.com/ [R=301,L]

Данный код позволит перенаправлять все возможные варианты домашней страницы на http://www.site.com.

Превращение файлов HTML в PHP

Иногда вам необходимо использовать PHP-код на HTML-страницах статического сайта. Вместо того, чтобы перенаправлять все свои HTML-страницы на их эквивалентные PHP-версии, вам просто необходимо «сказать» своему серверу, что он должен парсить HTML-файлы как PHP.


AddHandler application/x-httpd-php .html

Данный код работает с любыми файлами, поэтому, если вы захотите создать динамические XML- или ASP-файлы, которые будут вести себя как PHP-файлы, вам просто нужно внести следующие изменения:


AddHandler application/x-httpd-php .xml
AddHandler application/x-httpd-php .asp

Страницы ошибок

Пользовательские страницы ошибок могут быть легко настроены, например в CPanel (или DirectAdmin), но, если вы захотите настроить страницу ошибки через htaccess-файл, добавьте в него следующую строку:


# Обработка ошики 404 - Файл не найден
ErrorDocument 404 http://www.site.com/404.php
# Обработка ошики 403 - Доступ запрещен
ErrorDocument 403 http://www.site.com/403.php

Индексация директорий

Чтобы запретить роботу Google индексировать директории вы должны определить индексную страницу для необходимых директорий. Это не является обязательным на некоторых серверах.


DirectoryIndex index.php3

Я предпочитаю делать перенаправление на индексную страницу директории или другую подходящую страницу. Например, www.site.com/images/ может быть перенаправлен на www.site.com, а www.site.com/forum/ может быть перенаправлен на www.site.com/forum/index.php

Перенаправляющие страницы

Отличный пример использования htaccess для перенаправления одной страницы на другую:


redirect 301 /old-page.php http://www.site.com/new-page.php

Перенаправление вашего фида на Feedburner

Если вы хотите переключить ваш фид на сервис Feedburner, вам необходимо будет перенаправить свой текущий фид на новый адрес http://feeds.feedburner.com/blog-feed.

Перенаправление должно применяться для всех посетителей кроме робота Feedburner:


RewriteCond %{HTTP_USER_AGENT} !FeedBurner
RewriteRule ^ваш-фид\.xml$ http://feeds.feedburner.com/blog-feed [R,L]

Улучшенная хотлинк-защита

Если вы хотите запретить другим веб-сайтам напрямую ссылаться на изображения, расположенные на вашем сайте, но позволить поисковикам Google, Yahoo и MSN индексировать их, вам необходимо воспользоваться следующим кодом:


RewriteEngine on
RewriteCond %{HTTP_REFERER} .
RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)?site\. [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteCond %{HTTP_REFERER} !msn\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{REQUEST_URI} !^/hotlinker\.gif$
RewriteRule \.(gif|jpg|png)$ /hotlinker.gif [NC,L]

Изображение hotlinker.gif – это изображение, которое создано вами. Я предлагаю использовать что-то типа «Это изображение находится на сайте www.site.com» и ваш логотип.

Лично я разрешаю хотлинк, но использую определённое решение, которое использует сервис Google Images и сайты-хотлинкеры для получения ссылок на свой сайт.

Создание ЧПУ ссылок с помощью mod_rewrite

Модуль перезаписи Apache в основном используется для превращения динамических URL вида www.site.com/product.php?id=123 в статические и дружественные пользователю вида www.site.com/product/123.


RewriteEngine on
RewriteRule ^product/([^/\.]+)/?$ product.php?id=$1 [L]

Еще один пример, который приводит URL:

www.yoursite.com/script.php?product=123 к виду www.yoursite.com/cat/product/123/


RewriteRule cat/(.*)/(.*)/$ /script.php?$1=$2

Удаление строк запросов

Некоторые сайты ссылаются на ваш, добавляя строку запроса. Например, можно сослаться на ваш сайт, используя эту ссылку http://www.site.com/index.php?source=seoblog, просто для того, чтобы знать откуда приходит трафик. Это становится причиной появления дублирующегося содержания для вашего сайта, поэтому вам нужно настроить перенаправление на вашу домашнюю страницу:


RewriteCond %{QUERY_STRING} ^source= RewriteRule (.*) /$1? [R=301,L]

Пока все. Если есть, что добавить, прошу в каменты… :)


Вы прочитали статью и она Вам понравилась?
Подпишитесь на обновления!

Pаспечатать эту статью Pаспечатать эту статью