Настройка файла .htaccess

Как создать .htaccess?

Все не так страшно, как может показаться:

  1. открываем блокнот
  2. пишем код (можно и потом это сделать)
  3. сохраняем документ с названием .htaccess
  4. заливаем в корень сайта (или в папку на сервере, где будем производить настройки)

 

* 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]

 

Добавить комментарий