Настройка .htaccess. Несколько примеров основных параметров .htaccess файла.

neformat / Авг.14.2015. / 1 комментарий

Настройка .htaccess

На днях пришлось немного поковырять .htaccess на одном из проектов. В процессе в голову пришла мысль о необходимости, что надо немного структурировать ту информацию, которая у меня есть в голове, и создать что-то на подобии памятки для того, чтобы в следующий раз при необходимости каких-либо действий с .htaccess не пришлось что-то копать в интернете, что-то пробовать методом научного тыка, а просто взять и сделать.

Значения обозначений параметров для .htaccess:

RewriteCond — условие выполнения правила RewriteRule. Если заданное условие выполняется, то срабатывает редирект. Привила можно задавать при помощи регулярных выражений.

Используемые символы и значения:

. – точка, заменяет любой символ, но только один;

^ – спецсимвол начала строки;

() – группировка;

$ – спецсимвол конца строки;

! – спецсимвол отрицания;

\ – «экранирующий» слеш, следующий символ после него считается обычным, а не спецсимволом.

Модификаторы – применяются после обычных, спецсимволов или групп. С помощью них расширяется возможность использования шаблонов для срабатывания правил.

* – повторяется от 0 до 65536 раз;

? – символ повторяется 0 или 1 раз;

+ – повторяется от 1 до 65536 раз.

Флаги предназначены, чтобы задать дополнительные опции для используемого правила. Их перечисления осуществляется в  квадратных скобках через запятую, например: [NC] или [R=301,L].

NC — флаг NoCase, который отключает проверку регистра символов;

R — флаг Redirect, который останавливает процесс изменения URL-адреса и возвращает результат. В основном он используется со значением R=301, но так же применяется и для других временных перенаправлений, например 302, MOVED TEMPORARY;

L — флаг Last, который используется для остановки формирования URL-адреса и строка считается окончательной.

Ниже приведу несколько самых распространённых примеров настройки .htaccess, так скажем для наглядности.

301 и 302 – перенаправление или редирект.

301 – редирект свидетельствует о том, что страница изменила адрес и перенаправляет на новый адрес.

302 – редирект говорит о том, что страница временно изменила адрес и в данный момент индексировать надо обе страницы.

RewriteEngine on
Redirect 301 /old-page http://ваш-урл.ру/new-page

Создаем правила для самых распространенных ошибок 400, 401,404, 500.

В жизни случается всякое и я бы рекомендовал сразу же создать страницы для всех распространённых ошибок и сделать перенаправления на эти страницы.

ErrorDocument 400 /error400.php
ErrorDocument 401 /error401.php
ErrorDocument 403 /error403.php
ErrorDocument 404 /error404.php
ErrorDocument 500 /error500.php

Блокируем хотлинки с других сайтов.

Существуют такие нехорошие товарищи, которые любят использовать картинки с вашего ресурса на своих сайтах, при этом используют вашу пропускную способность в своих целях. Я считаю, что таких надо бороть. Заменим картинку, на которую идет хотлинк, на какую-нибудь другую картинку. Не забудьте указать правильный путь к картинке.

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?ваш-урл\.ru/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/noHL.jpg [L]

Склейка сайта www и без него.

Поисковые сайты очень не любят, когда сайт доступен по двум адресам, поэтому склеиваем.

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.ваш-урл\.ru$ [NC]
RewriteRule ^(.*)$ http://ваш-урл.ru/$1 [R=301,L]

Ограничиваем доступ к сайту.

Как я уже говорил, что в жизни бывает всякое, и иногда надо запретить доступ с определенного ip-адреса.

Order Allow,Deny
Allow from all
Deny from 192.168.1.1

Ну и конечно противоположная ситуация, когда надо разрешить только одному.

Order Deny,Allow
Deny from all
Allow from 192.168.1.1

Добавлять можно просто добавляя последнюю строку.

Защита определенного файла или папки.

Ограничение доступа к какому-либо файлу или папке – очень хорошая штука для защиты вашего сайта от всякого рода злоумышленников. В примере рассмотрена защита wp-config.php популярной CMS WordPress.

<Files wp-config.php>
order allow,deny
deny from all
</Files>
#Ограничиваем доступ htaccess
<Files .htaccess>
order allow,deny
deny from all
</Files>

Ограничение на доступ к Админ панели сайта.

Если у вас статический ip-адрес, вы можете защитить админку дополнительно и разрешить доступ только с вашего адреса.

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Example Access Control"
AuthType Basic
<LIMIT GET>
order allow, deny
deny from all
allow from 192.168.1.1 <-Ваш IP
&amp;lt;/LIMIT&amp;gt;

Запрет на автоматическое индексирование файлов

Apache уж так он устроен, что создает в каждой папке индексные файлы, в которых перечисляет какие файлы из папки используются. Чтобы этим не мог воспользоваться злоумышленник, предлагаю просто запретить индексирование.

Options -Indexes

Ну вот и все, я думаю, что все самые основные моменты настройки файла .htaccess рассмотрены. Далее все зависит от желания и умения админа сайта. Желаю всем удачи в настройке и доведения до ума своих проектов.



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

  • Помогите пожалуйста с дублями! Не могу понять как мне [ R=301, L] сделать. По разному пробовал, но никак. 
    domen-moy.ru/  
    domen-moy.ru/statya/  

    После слеша возможна подстановка поиска      

     ?s=чайник&submit=Поиск   

    Хочу чтобы ссылки могли состоять только из букв нижнего регистра и знака (-)  , и все символы и спецсимволы после слеша редиректили на активную ссылку, Но есть строка поиска после слеша (ее надо исключить чтобы эту строку не обрезало вместе с остальными символами), а внутри строки поиска появляется текст при поиске по сайту, там также условие чтоб только буквы нижнего регистра были, но уже без знака (-).  Сайт на wordpress.

Оставить комментарий

Войти с помощью: 


<------------->