############################################################################ #### Стандартный .htaccess для проектов студии Клондайк, версия 4.6 #### ############################################################################ RewriteEngine On # Директива включает редиректы. RewriteBase / # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1 с директивой = /$1 Options +FollowSymLinks # Разрешает переход по символическим ссылкам. php_flag display_errors off # запретить отображение ошибок (требование монитора качества) php_flag allow_url_fopen off # запретить использовать удаленные файлы (требование проактивной защиты) ############################################################################ #### Выбор основного зеркала (с www или без www) #### ############################################################################ # 1. Удалить www RewriteCond %{ENV:HTTPS} on #Если включен https RewriteRule .* - [E=SSL:s] #То создаем переменную ssl с текстом s RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] # Проверяем, содержит ли домен www в начале URL. RewriteRule ^(.*)$ http%{ENV:SSL}://%1/$1 [R=301,L] # Перенаправляем удаляем www # 2. Добавить www #RewriteCond %{ENV:HTTPS} on #Если включен https #RewriteRule .* - [E=SSL:s] #То создаем переменную ssl с текстом s #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC] # Если нет www в начале домена #RewriteRule ^(.*)$ http%{ENV:SSL}://www.%{HTTP_HOST}/$1 [R=301,L] #Подставляем www и https если он включен. ############################################################################ #### Перенаправляем протокол https на http #### ############################################################################ #RewriteCond %{HTTPS} on # Проверяем наличие https в URL. #RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] # Перенаправляем протокол на http. ############################################################################ #### Перенаправляем протокол http на https #### ############################################################################ RewriteCond %{HTTPS} off # Проверяем наличие https в URL. RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC] # Исключим обмен с 1С, ему требуется только 200 RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Перенаправляем протокол на http. ############################################################################ #### Убираем index.php, если он есть в конце URL #### ############################################################################ RewriteCond %{REQUEST_URI} ^(.*)/index\.php$ # URL cодержит index.php в конце. RewriteCond %{REQUEST_METHOD} =GET # Выявляем GET запрос в URL (не POST). RewriteRule ^(.*)$ %1/ [R=301,L] # Удалить index.php из URL. ############################################################################ #### Убираем повторяющиеся слеши (/) в URL #### ############################################################################ RewriteCond %{THE_REQUEST} // # Проверяем, повторяется ли слеш (//) более двух раз. RewriteCond %{QUERY_STRING} !http(s|):// # Убедимся что это не урл в GET RewriteRule .* /$0 [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 нет точки (файл). RewriteCond %{REQUEST_URI} ^(.+)$ # В URL есть хоть один символы RewriteRule ^(.*)$ $1/ [L,R=301] # Добавляем слеш в конце. ############################################################################ #### Компрессия статического контента для гугл спид тест #### ############################################################################ AddType image/svg+xml .svg AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE image/svg+xml ExpiresActive on ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/svg "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType text/javascript "access plus 1 year" ExpiresByType text/css "access plus 1 year" ExpiresByType application/javascript "access plus 1 year" ExpiresByType application/vnd.ms-fontobject "access plus 1 year" ExpiresByType application/x-font-ttf "access plus 1 year" ExpiresByType application/x-font-opentype "access plus 1 year" ExpiresByType application/x-font-woff "access plus 1 year" ExpiresByType image/svg+xml "access plus 1 year" Header set Cache-Control "max-age=31536000, public" Header set Cache-Control "max-age=7200, private, must-revalidate" Header set Cache-Control "max-age=86400, public" Header set Cache-Control "max-age=31536000, private" ############################################################################ #### Конец общей части, далее следует собственные директивы .htaccess #### ############################################################################