Слеши в конце URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]
Немного комментариев к коду. Первая строка отвечает за то, чтобы слеш не приписывался к запросам файлов. Вторая строка как раз и занимается определением, со слешем ли адрес или нет. Если адрес не содержит слеш в конце, то в действие вступает заключительная часть кода, делающая 301-й редирект на тот же самый адрес, но со слешем в конце.
Адрес сайта с www и без него
RewriteCond %{HTTP_HOST} ^www\.nighthawk\.ru
RewriteRule (.*) http://nighthawk.ru/$1/ [R=301,L]
Сливание адресов происходит опять таки посредством 301-го редиректа. Как вы уже, наверное, догадались — в первой строке и происходит тест на наличие в URL www-шного варианта написания адреса.
Добавление и удаление окончания .html у URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^([^.]*)\.html$
RewriteRule ^([^.]*)\.html$ /$1/ [R=301,L]
Прокомментирую код. Первые две строки служат для того, чтобы окончание .html не "отрывалось" у настоящих файлов и директорий соответственно. Третья строка занимается проверко, содержит ли URL окончание .html. И если содержит, то оно будет оторвано и сервер сделает 301-е перенаправление на адрес без .html.
Комментарии