Примеры настройки файла .htaccess. 16 повседневных приемов
Почти все пункты являются обязательными, кроме
- редиректа и блокировки - они настраиваются по мере необходимости
- а также настройки ЧПУ (ЧеловекоПонятныхУРЛ) - как правило, можно обойтись функционалом CMS
Как создать .htaccess?
Все не так страшно, как может показаться:
- открываем блокнот
- пишем код (можно и потом это сделать)
- сохраняем документ с названием .htaccess
- заливаем в корень сайта (или в папку на сервере, где будем производить настройки)
* yoursitename.ru в примерах заменяйте на адрес вашего домена
Настройки по умолчанию
1. Установка главной страницы по умолчанию
1.DirectoryIndex pagename.html
2. Определение страниц ошибок (error) в .htaccess
1.ErrorDocument 403 /403.php
2.ErrorDocument 404 /404.php
3.ErrorDocument 500 /500.php
Соответственно адрес и название файла могут быть другими, например /error/page404.html
3. Защита от хотлинков
То, что контент с сайтов воруют, это уже давно не новость. Но бывает, что прут вместе с картинками. Вот дабы избежать нагрузки на сервер и раздутия траффика, пишем:
2.RewriteCond %{HTTP_REFERER} !^$
3.
4.#домены, которые могут ссылаться на картинки с вашего сайта
5.RewriteCond %{HTTP_REFERER} !^http:
6.
7.#не показывать картинки при хотлинках
8.RewriteRule \.(gif|jpe?g|png)$ - [F,NC,L]
Если хотите, чтобы на чужом сайте вместо 403 ошибки появлялась определенная картинка, последнюю строку следует заменить на:
1.RewriteRule \.(jpg|png|gif)$ http:
4. Принудительно сохранение файла вместо открытия
Если хотите, чтобы посетители вместо просматра файла онлайн сохраняли его, то в .htaccess пишем:
1.AddType application/octet-stream .doc .mov .avi .pdf .xls .mp4
5. Кэширование файлов
В WordPress для этого есть специальный плагин: wp-super-cache. Если вы же пользуетесь CMS, которая кэширование не поддерживает, то можно произвести следующие настройки в .htaccess
01.#кэширование html и htm на сутки
02.
03.<FilesMatch ".(html|htm)$">
04.Header set Cache-Control "max-age=43200"
05.</FilesMatch>
06.
07.#кэширование css, javascript и txt-файлов на неделю
08.<FilesMatch ".(js|css|txt)$">
09.Header set Cache-Control "max-age=604800"
10.</FilesMatch>
11.
12.#кэширование flash и картинок на месяц
13.<FilesMatch ".(flv|swf|ico|gif|jpg|jpeg|png)$">
14.Header set Cache-Control "max-age=2592000"
15.</FilesMatch>
16.
17.#запрет на кэширование скриптов
18.<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
19.Header unset Cache-Control
20.</FilesMatch>
Параметр max-age приведен в секундах.
6. Включение ошибок на время отладки
1.php_flag display_errors on
Спасибо voland’у за подсказку
Настройка редиректа с помощью .htaccess
1. 301 редирект
Оптимальное решение для перенаправления посетителей со старых адресов на новые, если со временем структура сайта менялась, а старые URL’ы могли где-то остаться.
1.Redirect 301 /oldpage.html http:
Встречается еще такой вариант:
1.Redirect permanent /oldpage.html http:
Но в чем принципиальная разница между ними, честно говоря, объяснить не смогу. Может кто из читателей подскажет.
2. Склеивание доменов с www и без www
Редирект с адреса yoursitename.ru на www.yoursitename.ru
1.RewriteEngine On
2.RewriteBase /
3.RewriteCond %{HTTP_HOST} !^www.yoursitename.ru$ [NC]
4.RewriteRule ^(.*)$ http:
Обратный редирект
2.RewriteBase /
3.RewriteCond %{HTTP_HOST} !^yoursitename.ru$ [NC]
4.RewriteRule ^(.*)$ http:
3. 302 редирект
Если вы ведете работы на сайте, то можете временно отправлять посетителей на нужную страницу (например, с описание того, когда планируется завершение работ и как можно с вами связаться).
2.RewriteCond %{REQUEST_URI} !/informpage.html$
3.RewriteCond %{REMOTE_HOST} !^12\.345\.678\.90
4.RewriteRule $ http:
Просмотр сайта будет возможен только с вашего ip-адреса - 12.345.678.90
4. Переадресация на другой сайт
Переадресация всех посетителей на другой сайт, помимо указанных ip-адресов
1.ErrorDocument 403 http:
2.Order deny,allow
3.Deny from all
4.Allow from 12.345.678.90
5.Allow from 12.345.678.92
5. Переадресация на безопасное https соединения
2.RewriteCond %{HTTPS} !on
3.RewriteRule (.*) https:
Запрет/блокировка с помощью .htaccess
1. Запрет на листинг директории
Используется при отсутствии индексного файла, если хотите запретить просмотр содержимого папки (например, для images):
Обратный код, в смысле разрешение
2. Блокировка доступа к файлу
Например, это может быть ваш .htaccess
2.order allow,deny
3.deny from all
4.</Files>
3. Блокировка по ip
Чтобы спамеры не надоедали
2.Order Deny,Allow
3.Deny from 12.345.678.90
4.Deny from 90.876.543.
5.Deny from .tvoe.tv
6.Allow from all
7.</Limit>
Будут заблокированы:
- юзер с ip 12.345.678.90
- все посетители с ip, попадающими в диапазон от 90.876.543.0 до 90.876.543.255
- и все посетители от провайдера tvoe.tv
Настройка ЧПУ с помощью .htaccess
Вообще, если вы работаете с WordPress, то настроить “дружелюбные” url можно в разделе Настройки » Постоянные ссылки (ЧПУ). Многие CMS так же поддерживают настройку адреса страницы. Поэтому, если есть возможность, сначала попробуйте обойтись функционалом движка, и потом уже приступайте к настройке htaccess.
1. Как убрать из адреса ?p=
По умолчанию адрес страницы выглядит следующим образом: yoursitename.ru/?p=xxxx, где xxxx - id статьи.
1.RewriteCond %{REQUEST_URI} ^/([0-9]+)$
2. Как убрать из адреса category
По аналогии с прошлым способом пишем
1.RewriteRule ^category/(.+)$ http:
|