.htaccess — Часто-используемые решения
Редирект
301 редирект с фиксированным адресом
Redirect 301 /addr_in https://example.ru/?utm_source=tupe_data&utm_medium=organic
Классический набор правил (https, без www, с индексов на /)
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/
RewriteRule ^(.*)index\.(php|html|htm)$ https://%{HTTP_HOST}/$1 [R=301,L]
Все правила ставятся после
RewriteEngine On
Перенаправить с HTTP на HTTPS (собрал все варианты с которыми встречался)
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
или
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
или
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
или
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
или
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Перенаправить с поддомена www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
Перенаправить со страница /index.php или /index.htm или /index.html
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/
RewriteRule ^(.*)index\.(php|html|htm)$ https://%{HTTP_HOST}/$1 [R=301,L]
Перенаправить на index.php если не найден файл
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Изменение в заголовке «Content-Type» к примеру файлам с расширением «phar», чтобы их можно было скачивать
<IfModule mod_headers.c>
<FilesMatch "\.(?i:phar)$">
ForceType application/octet-stream
</FilesMatch>
</IfModule>
Перенаправить на другой хост, кроме определенного IP:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain1\.com$ [NC]
RewriteCond %{REMOTE_ADDR} !^131\.221\.61\.91
RewriteRule ^(.*)$ https://domain2.com/$1 [R=301,L]