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