Для единообразия формирования URL страниц сайтов, и предотвращения появлений дубликатов страниц, вводится стандартная часть файла. .htaccess.
Для создания редиректов старых URL на новые, воспользуетесь стандартом по собору редиректов. Убедиться что все ссылки одают ответ 301.
Данный конфиг позволяет решить следующие задачи:
Последовательность установки:
Код конфигурационного файла каталога .htaccess.
############################################################################ #### Стандартный .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] # Добавляем слеш в конце. ############################################################################ #### Компрессия статического контента для гугл спид тест #### ############################################################################ <IfModule mod_deflate.c> 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 </IfModule> <IfModule mod_expires.c> 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" </IfModule> <IfModule mod_headers.c> <filesmatch "\.(ico|flv|jpg|jpeg|webp|png|gif|css|swf|woff|pdf)$"> Header set Cache-Control "max-age=31536000, public" </filesmatch> <filesmatch "\.(html|htm)$"> Header set Cache-Control "max-age=7200, private, must-revalidate" </filesmatch> <filesmatch "\.(pdf)$"> Header set Cache-Control "max-age=86400, public" </filesmatch> <filesmatch "\.(js|otf|ttf|woff|woff2)$"> Header set Cache-Control "max-age=31536000, private" </filesmatch> </IfModule> ############################################################################ #### Конец общей части, далее следует собственные директивы .htaccess #### ############################################################################
Если есть проблема с зацикливанием https
Стандартный редирект для сайта на чистом html
Редиректsы для сайтов переведенных на чистый html
############################################################################ #### Стандартный .htaccess для HTML сайтов 0.1 #### ############################################################################ # 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. RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Перенаправляем протокол на http. ############################################################################ #### Удаляем index.html из URL #### ############################################################################ RewriteRule ^(.*)index\.html$ https://%{HTTP_HOST}/$1 [R=301,L] RewriteRule ^(.*)index\.htm$ https://%{HTTP_HOST}/$1 [R=301,L] ############################################################################ #### Компрессия статического контента для гугл спид тест #### ############################################################################ <IfModule mod_deflate.c> 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 </IfModule> <IfModule mod_expires.c> 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" </IfModule> <IfModule mod_headers.c> <filesmatch "\.(ico|flv|jpg|jpeg|webp|png|gif|css|swf|woff|pdf)$"> Header set Cache-Control "max-age=31536000, public" </filesmatch> <filesmatch "\.(html|htm)$"> Header set Cache-Control "max-age=7200, private, must-revalidate" </filesmatch> <filesmatch "\.(pdf)$"> Header set Cache-Control "max-age=86400, public" </filesmatch> <filesmatch "\.(js|otf|ttf|woff|woff2)$"> Header set Cache-Control "max-age=31536000, private" </filesmatch> </IfModule> ############################################################################ #### Конец общей части, далее следует собственные директивы .htaccess #### ############################################################################
Для создания редиректов старых URL на новые, воспользуетесь стандартом по собору редиректов. Убедиться что все ссылки одают ответ 301.
Комментариев нет:
Отправить комментарий