.htaccess — mod_rewrite

28 Июл

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

Для того чтобы корректно исполнялся модуль перенаправлений, он должен быть установлен в апаче (mod_rewrite в конфиге apache).
После чего, для работоспособности ниже приведенных перенаправлений не забываем добавлять для условий в .htaccess, в начале и конце условий:

<IfModule mod_rewrite.c>
RewriteEngine On
...
</IfModule>

Если файл не находится, например, в корневой директории сайта, пробуем его достать из другой директории /dir2:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/dir2/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/dir2/$1 -d
RewriteRule (.*) /dir2/$1 [L]
</IfModule>

Перенаправляем все запросы на файлы из одной директории на сайте в другую директорию на этом же сайте

RewriteRule ^product/(.*)$ /products/$1 [L,R=301]

Перенаправляем все запросы на файлы из директории /test на главный сайт http://domain.com

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^test/(.*) http://domain.com/$1 [R=301,L]
</IfModule>

Перенаправляем все запросы на файлы с расширением .php из директории /test на файлы с расширением .php главного сайта http://domain.com

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^test/(.*).php http://domain.com/$1.php [R=301,L]
</IfModule>

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

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

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