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



@Nik_o_lay

Для сайта нужно составить несколько правил в 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]

Помогите, пожалуйста, правильно все прописать и найти для остальных правил


Решения вопроса 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]



7

комментариев


Ответы на вопрос 1



@shambler81 Куратор тега htaccess

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

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