Задать вопрос
Nik_o_lay
@Nik_o_lay
Изучаю фронтенд

Как правильно прописать правила в htaccess?

Для сайта нужно составить несколько правил в htaccess.

1. Убрать из сылок расширение .html (https://example.com/about.html)
2. При одинаковом названии файла и папки открывать файл.
3. Если есть слеш в конце делать редирект на страницу с без слеша.
4. Удалять (делать редирект) слеши из ссылок (https://example.com/////about)
5. Сделать редирект с www. на без www.
6. Сделать редирект с http на https.

Для некторых я уже нашел, вроде работают:
DirectorySlash Off 
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)  /$1.html [L] 
RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index)?(.*?)\.(html|php)[\s?/] [NC] 
RewriteRule ^(.*)  /%1%2 [R=302,L]
RewriteCond %{REQUEST_URI} !(/$|\.) [NC]
RewriteRule ^  %{REQUEST_URI}/ [R=302,L] 

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

RewriteCond %{THE_REQUEST} ([^\s]*)\/{2,}(\?[^\s]*)?
RewriteRule (.*) / [R=301,L]

RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]


Помогите, пожалуйста, правильно все прописать и найти для остальных правил
  • Вопрос задан
  • 679 просмотров
Подписаться 3 Сложный 2 комментария
Решения вопроса 1
@dodo512
DirectorySlash Off 
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ https://site.ru/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[^?]+//  [OR]
RewriteCond %{HTTP_HOST}   ^www\.    [NC]
RewriteRule .* https://site.ru/$0 [R=301,L]

RewriteCond %{THE_REQUEST} ^\S+\s([^?\s]*?)(/index)?\.html
RewriteRule ^ https://site.ru%1 [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)  /$1.html [L]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы