Apache: настройка mod_rewrite

20/12/2022

Настройки прописываются в конфигурационный файл .htaccess

Подключаем модуль MOD_REWRITE:


RewriteEngine on

Для того чтобы передать строку запроса(QUERY_STRING) на другой файл, нужно прописать правило:


RewriteRule ^directory/file.php(.*)$ index.php?%{QUERY_STRING} 

Перенаправление на другой адрес, незаметно для пользователя, с обработкой завершающего слеша


RewriteRule ^podkrovelnie_materiali(/?)$ catalog\.php\?c1=9 [L]

Еще примеры перенаправлений:


RewriteCond %{REQUEST_URI} ^/brand/nike/$
RewriteRule ^(.*)$ brand\.php\?brand=21 [L]

RewriteRule ^article\/(\d{1,4})\/$ index\.php\?i1=5&i2=$1 [L]

RewriteCond %{REQUEST_URI} benefits$
RewriteRule benefits$ http://www.domain.ru/benefits/ [R=301,L]

редирект на адрес со слешем


RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ $1/ [R]

редирект на страницы с другим расширением


RewriteRule ^(.*)\.html $1\.php

редирект на урл с слэшом


RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.html$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI} !-l
RewriteRule (.*) http://www.domain.ru/$1/ [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$ 
RewriteCond %{REQUEST_URI} !^/file\.html$
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}/ [R=permanent,L]

403 ошибка


RewriteEngine on
RewriteBase /
RewriteRule ^.htaccess$ - [F]

404 ошибка


RewriteCond %{REQUEST_URI} folder\/razd\.html
RewriteRule .*  [R=404]   

Теги - Linux , Php , Ubuntu