Last active
July 19, 2020 09:33
-
-
Save Wegazz/14f050c7c2acb5f27f0b0fb6ae0855c2 to your computer and use it in GitHub Desktop.
Стандартный .htaccess подходящий наверное для большинства случаев.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############################################################################ | |
#### Cтандартный .htaccess #### | |
############################################################################ | |
RewriteEngine On | |
# Директива включает редиректы. | |
RewriteBase / | |
# Без директивы (.*) = /$1 будет /var/wwww/site/web/$1 с директивой = /$1 | |
Options +FollowSymLinks | |
# Разрешает переход по символическим ссылкам. | |
############################################################################ | |
#### Перенаправляем протокол http на https #### | |
############################################################################ | |
#### Отключено, так как правило ниже перенаправляет. | |
# 1. Редирект всего, что не на 443 порту (раскоментировать директивы пункта 1) | |
# RewriteCond %{SERVER_PORT} !^443$ | |
# Проверяем наличие http в URL. | |
# RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] | |
# Перенаправляем протокол на https. | |
############################################################################ | |
#### Выбор основного зеркала (или с www или без www) #### | |
#### С перенаправлением на (http или https) #### | |
############################################################################ | |
# 1. Редирект с www на без www. (раскоментировать директивы пункта 1) | |
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] | |
# Проверяем, содержит ли домен www (в начале URL). | |
RewriteRule ^(.*)$ https://%1/$1 [R=301,L] | |
# Перенаправляем URL на домен без www. | |
# (http или https) прописать нужное. | |
#### | |
# 2. Редирект без www на www. (раскоментировать директивы пункта 2) | |
#RewriteCond %{HTTP_HOST} !^www\.(.*) [NC] | |
# Проверяем, не содержит ли домен www (в начале URL). | |
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] | |
# Перенаправляем URL на домен c www. | |
############################################################################ | |
#### Убираем повторяющиеся слеши и знаки вопроса ? (/|?) в URL #### | |
############################################################################ | |
# RewriteCond %{THE_REQUEST} // | |
RewriteCond %{THE_REQUEST} (//|/?) | |
# Проверяем, повторяется ли слеш (//) или (/?) более одного раза? | |
RewriteRule .* /$0 [R=301,L] | |
# Исключаем все лишние слеши и вопросительные знаки. | |
#### | |
# Не рабочий метод метод (раскоментировать директивы пункта) | |
# RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$ | |
# Проверяем, повторяется ли слеш (//) более двух раз. | |
# RewriteRule . %1/%2 [R=301,L] | |
# Исключаем все лишние слеши. | |
############################################################################ | |
#### Убираем слеши в конце URL для статических файлов (содержит точку) #### | |
############################################################################ | |
RewriteCond %{REQUEST_URI} \..+$ | |
# Если файл содержит точку. | |
RewriteCond %{REQUEST_FILENAME} !-d | |
# И это не директория. | |
RewriteCond %{REQUEST_FILENAME} -f | |
# Является файлом. | |
RewriteCond %{REQUEST_URI} ^(.+)/$ | |
# И в конце URL есть слеш. | |
RewriteRule ^(.+)/$ /$1 [R=301,L] | |
# Исключить слеш. | |
############################################################################ | |
#### Добавляем слеш(/), если его нет, и это не файл. #### | |
############################################################################ | |
RewriteCond %{REQUEST_URI} !(.*)/$ | |
# Если слеша в конце нет. | |
RewriteCond %{REQUEST_FILENAME} !-f | |
# Не является файлом. | |
RewriteCond %{REQUEST_URI} !\..+$ | |
# В URL нет точки (файл). | |
RewriteRule ^(.*)$ $1/ [L,R=301] | |
# Добавляем слеш в конце. | |
############################################################################ | |
#### Убираем index.(html|php) если они есть в конце URL #### | |
############################################################################ | |
RewriteCond %{REQUEST_METHOD} =GET | |
# Выявляем GET запрос в URL (не POST). | |
RewriteCond %{REQUEST_URI} ^(.*)/index\.(html|php)$ | |
# URL cодержит index.(html|php) в конце. | |
RewriteRule ^(.*)$ %1/ [R=301,L] | |
# Удалить index.php из URL. | |
############################################################################ | |
#### Конец общей части, далее следует собственные директивы .htaccess #### | |
############################################################################ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment