Last active
October 14, 2024 14:21
-
-
Save alex28742/960eda6a7cf675990a964e321de0edf4 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
Используемые символы и значения: | |
======================================================== | |
. – точка, заменяет любой символ (кроме символа перевода строки /n), но только один; | |
^ – спецсимвол начала строки; | |
() – группировка; | |
$ – спецсимвол конца строки; | |
[] - позволяет указать символы, которые могут встречаться на этом месте в строке. | |
можно перечислять символы подряд или указать даипазон через тире. | |
[^] - значение можно инвертировать, если после первой скобки указать символ ^ | |
Так можно указать символы, которых не должно быть на этом месте в строке. | |
! – спецсимвол отрицания; | |
\ – «экранирующий» слеш, следующий символ после него считается обычным, а не спецсимволом. | |
\d - любая цифра | |
\D - не цифра | |
\w - любая латинская буква, цифра или знак подчеркивания | |
\W - Не латинская буква не цифра и не знак подчеркивания. | |
\s - любой непечатный символ (пробел, табуляция, перевод страницы, новая строка или перевод каретки.) | |
\S - Не непечатный символ | |
{n} - в точности n вхождений предыдущего символа или подвыражения в строку. | |
{n,m} - не менее n выражений и не более m выражений. Цифры указываются через запятую без пробела. | |
n|m - один из символов n или m | |
Каждая группа символов соответствующая подвыражению сохраняется в памяти. В дальнейшем группу символов можно извлечь, указав после символа $ номер скобки | |
пример: AliasMatch ^/manual(?:/(?:de|en|es|fr|ru))?(/.*)?$ "C:/Apache2/manual$1" | |
Модификаторы – применяются после обычных, спецсимволов или групп. С помощью них расширяется возможность использования шаблонов для срабатывания правил. | |
======================================================= | |
* – повторяется от 0 до 65536 раз; | |
? – символ повторяется 0 или 1 раз; | |
+ – повторяется от 1 до 65536 раз. | |
Флаги предназначены, чтобы задать дополнительные опции для используемого правила. Их перечисления осуществляется в квадратных скобках через запятую, например: [NC] или [R=301,L]. | |
======================================================= | |
NC — флаг NoCase, который отключает проверку регистра символов; | |
R — флаг Redirect, который останавливает процесс изменения URL-адреса и возвращает результат. В основном он используется со значением R=301, но так же применяется и для других временных перенаправлений, например 302, MOVED TEMPORARY; | |
L — флаг Last, который используется для остановки формирования URL-адреса и строка считается окончательной. | |
############################################################################ | |
#### Cтандартный .htaccess для проектов студии Клондайк, версия 2.3 #### | |
############################################################################ | |
RewriteEngine On | |
# Директива включает редиректы. | |
RewriteBase / | |
# Без директивы (.*) = /$1 будет /var/wwww/site/web/$1 с директивой = /$1 | |
Options +FollowSymLinks | |
# Разрешает переход по символическим ссылкам. | |
############################################################################ | |
#### Перенаправляем протокол https на http #### | |
############################################################################ | |
RewriteCond %{HTTPS} on | |
# Проверяем наличие https в URL. | |
RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} | |
# Перенаправляем протокол на http. | |
############################################################################ | |
#### Выбор основного зеркала (или с www или без www) #### | |
############################################################################ | |
# 1. Редирект с www на без www. (раскоментировать директивы пункта 1) | |
#RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] | |
# Проверяем, содержит ли домен www (в начале URL). | |
#RewriteRule ^(.*)$ http://%1/$1 [R=301,L] | |
# Перенаправляем URL на домен без www. | |
#### | |
# 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 %{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.php, если он есть в конце URL #### | |
############################################################################ | |
RewriteCond %{REQUEST_METHOD} =GET | |
# Выявляем GET запрос в URL (не POST). | |
RewriteCond %{REQUEST_URI} ^(.*)/index\.php$ | |
# URL cодержит index.php в конце. | |
RewriteRule ^(.*)$ %1/ [R=301,L] | |
# Удалить index.php из URL. | |
############################################################################ | |
#### Конец общей части, далее следует собственные директивы .htaccess #### | |
############################################################################ | |
Рерайт с без слеша на слеш в конце | |
Options +FollowSymlinks | |
RewriteEngine On | |
RewriteBase / | |
RewriteCond %{REQUEST_FILENAME} !-f | |
RewriteCond %{REQUEST_FILENAME} !-d | |
RewriteCond %{REQUEST_URI} !-f | |
RewriteCond %{REQUEST_URI} !/$ | |
RewriteCond %{REQUEST_URI} !.html$ | |
RewriteRule (.+) $1/ [R=301,L] | |
Убираю лишний слеш в конце | |
RewriteCond %{THE_REQUEST} ([^\s]*)\/{2,}(\?[^\s]*)? | |
RewriteRule (.*) %1 [R=301,L] | |
Включение gzp сжатия http://www.internet-technologies.ru/articles/article_2866.html | |
# сжатие text, html, javascript, css, xml: | |
<ifModule mod_deflate.c> | |
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript | |
</ifModule> | |
Проверка работает ли сжатие: http://www.gidnetwork.com/tools/gzip-test.php | |
#Настройка кеша браузера | |
<IfModule mod_expires.c> | |
ExpiresActive on | |
ExpiresByType image/jpeg "access plus 3 day" | |
ExpiresByType image/gif "access plus 3 day" | |
ExpiresByType image/png "access plus 3 day" | |
ExpiresByType text/css "access plus 3 day" | |
ExpiresByType application/javascript "access plus 3 day" | |
</IfModule> | |
# Cashe | |
<ifModule mod_expires.c> | |
ExpiresActive On | |
#по умолчанию кеш в 5 секунд | |
ExpiresDefault "access plus 5 seconds" | |
#кэшировать флэш и изображения на месяц | |
ExpiresByType image/x-icon "access plus 2592000 seconds" | |
ExpiresByType image/jpeg "access plus 2592000 seconds" | |
ExpiresByType image/png "access plus 2592000 seconds" | |
ExpiresByType image/gif "access plus 2592000 seconds" | |
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" | |
#кэшировать css, javascript и текстовые файлы на одну неделю | |
ExpiresByType text/css "access plus 604800 seconds" | |
ExpiresByType text/javascript "access plus 604800 seconds" | |
ExpiresByType application/javascript "access plus 604800 seconds" | |
ExpiresByType application/x-javascript "access plus 604800 seconds" | |
#кэшировать html и htm файлы на один день | |
ExpiresByType text/html "access plus 43200 seconds" | |
#кэшировать xml файлы на десять минут | |
ExpiresByType application/xhtml+xml "access plus 600 seconds" | |
</ifModule> | |
#c www на без www | |
# www.* -> .* | |
RewriteCond %{HTTP_HOST} ^www.es-clinic.ru$ [NC] | |
RewriteRule ^(.*)$ http://es-clinic.ru/$1 [R=301,L] | |
#c .html на / | |
# .html -> / | |
RewriteBase / | |
RewriteRule ^(.*)\.html$ $1/ [R=301,L] | |
# с без слеша на слеш | |
# _ -> / | |
RewriteCond %{REQUEST_FILENAME} !-f | |
RewriteCond %{REQUEST_URI} !(.*)/$ | |
RewriteRule ^(.*)$ /$1/ [R=301,L] | |
#с http на https *** (см строку 248!!!) | |
RewriteCond %{HTTP:X-Forwarded-Proto} !https | |
RewriteCond %{HTTPS} off | |
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] | |
# c https на http по инструкции reg.ru | |
#RewriteEngine On | |
#RewriteCond %{SERVER_PORT} ^443$ [OR] | |
#RewriteCond %{HTTPS} =on | |
#RewriteRule ^(.*)$ http://stroi-gazon.ru/$1 [R=301,L] | |
Удалить повторяющиеся слеши в URL если их блольше чем 1 | |
RewriteCond %{THE_REQUEST} // | |
# Проверяем, повторяется ли слеш (//) более двух раз. | |
RewriteRule .* /$0 [R=301,L] | |
# Исключаем все лишние слеши. | |
редирект с /index | |
RewriteCond %{REQUEST_URI} /index$ | |
RewriteRule ^(.*)$ https://petkorma.ru/ [R=301,L] | |
----------------- | |
#https на http (по старым ссылкам https:// браузер будет отдавать предупреждение!!) | |
RewriteCond %{HTTPS} off | |
RewriteCond %{HTTP:X-Forwarded-Proto} https | |
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] | |
----------------- | |
***Важно!!! | |
Правило RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] должно стоять ниже перенаправления на https | |
----------------- | |
#RewriteRule ^catalog/ryba-zamorozhennaya/(.*) /catalog/ryba/ryba-zamorozhennaya/$1 [R=301,L] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment