Cекреты настройки .htaccess файла

Cекреты настройки .htaccess файла

Файл .htaccess - это пользовательский файл для дополнительной настройки web-сервера Apache. Правила в .htaccess применяются для каталога и для всех его подкаталогов, в котором он создан. Это позволяет добавить правила как и для всего сайта, так и для конкретного каталога. Имя данного файла начинается с точки, что в unix-системах указывает на то, что он является скрытым.


Редирект с http на https:
Для перенаправления всех страниц сайта с http на https достаточно добавить правило в начало файла .htaccess, который расположен в корневой папке сайта.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !robots.txt$
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Ограничение доступа к сайту:
Данным правилом запретим доступ сайту или директории сайта, где .htaccess расположен с подобными правилами, для всех, кроме IP-адреса 123.123.123.123. По аналогии можно указывать несколько строк с IP-адресами, которым доступ нужно разрешить.
Require all denied
Require ip 123.123.123.123

Данным правилом наоборот закрываем доступ для конкретного IP-адреса 123.123.123.123:
Require all granted
Require not ip 123.123.123.123

Ограничение доступа к конкретному файлу, в примере файл cron.php:
<Files "cron.php">
Require all denied
Require ip 123.123.123.123
</Files>

Если вышеуказанных директив нет, то посредством файла .htaccess доступ к сайту не ограничивается.

Редирект 301:
С главной страницы сайта редирект 301 на URL http://site.ru можно сделать таким образом. В данном примере и последующих, вместо site.ru нужно указать имя вашего сайта или нужный URL.
Redirect 301 / http://site.ru

Можно также использовать данное правило для любой директории сайта. Для этого вместо / указываем нужную директорию, на пример /my_dir.
Redirect 301 /my_dir http://site.ru

Следующее правило используется для перенаправления всех страниц домена site.ru на соответствующие страницы другого домена new-site.ru. Данное правило нужно добавить в .htaccess сайта, со страниц которого должен быть редирект, в примере это site.ru:
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://new-site.ru/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://new-site.ru/$1 [L,R=301]

По аналогии с предыдущим правилом можно сделать редирект со всех страниц www.site.ru на такие же страницы site.ru, то есть это редирект с www на без www:
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]

И наоборот, с без www на такую же страницу с www:
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [L,R=301]

Это правило поможет избавиться от .html в конце URL страницы:
RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R=301]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]

Еще можно убрать / в конце URL:
RewriteEngine on
RewriteRule (.+)/$ /$1 [L,R=301]

Или добавить / в конце URL, который не заканчиваются на / :
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Кодировка сайта:
В .htaccess также можно принудительно установить кодировку для сайта используя директиву AddDefaultCharset и передавая ей один параметр — желаемую кодировку, к примеру:
AddDefaultCharset UTF-8

или
AddDefaultCharset WINDOWS-1251

Или можно отключить установку кодировки web-сервером использую директиву:
CharsetDisable on

Переопределение страниц ошибок:
Эти правила заменят стандартные страницы ошибок на указанные пользовательские страницы. Ссылка http://site.ru/error_page_404.html и другие нужно заменить на ваши ссылки страниц ошибок:
ErrorDocument 404 http://site.ru/error_page_404.html
ErrorDocument 403 http://site.ru/error_page_403.html
ErrorDocument 500 http://site.ru/error_page_500.html

Указание нестандартного индексного файла:
При открытии любого веб-сайта сервер ищет в корневой папке индексный файл, который по умолчанию задан как index.php или index.html. В случае, если наш индексный файл отличается от заданных по умолчанию, и называется, к примеру, main.php, мы можем это указать в .htaccess директивой:
DirectoryIndex main.php
 
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.