Несколько правил использования Mod_Rewrite | WebDuty

Несколько правил использования Mod_Rewrite

Mod_Rewrite это такой механизм, по умолчанию включенный в Аpache, который дает возможность динамически менять URL страницы. Он как правило используется для редиректа и ЧПУ (чистые ссылки типа /contacts), но из него можно выжать гораздо больше. Об этом и пойдет речь в этой статье.
sm8

Для начала включим его

Чтобы включить Mod_Rewrite нужно открыть файл .htaccess в корне сайта и вставить следующий код в начало этого файла.

RewriteEngine on

Простая команда замены URL’а

Синтаксис:

RewriteRule Pattern Substitution [Flag(s)]  

Пример:

RewriteRule   ^/$ index.php
RewriteRule   ^about$ about.php
RewriteRule   ^contacts$ contacts.php
RewriteRule   ^develop$ develop.php
RewriteRule   ^powerup$ powerup.php
RewriteRule   ^services$ services.php
RewriteRule   ^support$ support.php

Т.е с URL’ла http://domain.ru/ будет открываться страница
http://domain.ru/index.php, c http://domain.ru/about – http://domain.ru/about.php и т.д.

URL’лы всегда относительны

Помните что URL для перенаправления в файле .htaccess всегда указывается относительно каталога, в котором находится этот файл. В предыдущем примере файл .htaccess находился в корневом каталоге.

Простой редирект

Если вы хотите чтобы со страницы 1.html пользователь попадал на страницу 2.html c помощью простого 301 Redirect, то вставте в файл .htacces следующий код:

RewriteRule ^1.html$ 2.html 

Сайт не работает без WWW

Если ваш сайт не открывается, если вводить его URL без www, то вставте в файл .htaccess в корне сайта следующий код:

RewriteCond %{HTTP_HOST} !^yourdomain\.com$ [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [R=301,L]

Блокирование определённого IP-адреса

Если вы хотите заблокировать доступ к сайту с определённого IP-адреса, вы можете использовать следующий код:

RewriteCond %{REMOTE_ADDR} ^(A\.B\.C\.D)$
RewriteRule ^/* http://www.yourdomain.com/sorry.html [L]

Вместо A,B,C,D поставте соответствующие цифры нужного IP-адреса, не забывайте ставить слеш перед точкой.
Пользователя с этим IP Apache перенаправит на страницу http://www.yourdomain.com/sorry.html.

Блокировка по UserAgent

Если вы хотите заблокировать пользователя, использующего определённый UserAgent, либо бота, что более вероятно ;) то используйте следующий код

RewriteCond %{HTTP_USER_AGENT} UserAgent
RewriteRule .* - [F,L]

где слово UserAgent заменяется на UserAgent, пользователей или ботов, использующих который, вы не хотели бы видеть у себя на сайте.
Также можно блокировать несколько UserAgent’ов заменив первую строчку кода на что-то подобное:

RewriteCond %{HTTP_USER_AGENT} UserAgentA [OR]
RewriteCond %{HTTP_USER_AGENT} UserAgentB

Изображение по умолчанию

В случае ненахождения файла изображения на сайте, браузер оставляет его пустым, либо использует свою стандартную картинку. Чтобы при “битой ссылке” на изображение, отображалась ваша стандартная картинка, скажем /images/default.jpg. Вам поможет следующий код:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^images/.*\.jpg$ /images/default.jpg [L]

Редирект со всех страниц сайта на одну

При ведении работ по изменению содержания или функционала вашего сайта часто необходимо перенаправлять пользователей со всех страниц на одну (“на сайте ведутся работы”), например page.html. Для этого можно использовать следующий код:

RedirectMatch 302 ^/ /page.html

Файлы всегда имеют приоритет

Помните, что файлы на сервере всегда будут иметь приоритет над URL’ом. Тоесть есть у вас есть каталог about, вы не сможете перенаправить пользователя на http://yourdomain.com/about. Чтобы исправить это, просто переименуйте соответствующий каталог.
И ещё. Помните, что команды в файле .htaccess учитывают регистр символов.

Подпишись на обновления

Если вам понравилась статья, подпишитесь на обновления через RSS (?), чтобы не пропустить новые интересные статьи. Также Вы можете зафолловить меня в Twitter или подписаться на обновления по email.

Закладки

Bookmark and Share

Комментарии

  1. АлькаIdenticon Алька

    Ай, спасибо, молодца!

    Отличные статьи! С таким удовольствием читаю!


  2. lesha111Identicon lesha111

    а вот вариант как заблокировать регистрацию не из России

    Order Allow,Deny
    allow from 1.2.3.4/xx
    ….
    ….
    allow from 5.6.7.8/yy

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

    а вот список IP по странам:
    http://www.find-ip-address.org/ip-country/

    пригодится всем, кому надоели спамеры, из стран СНГ.


  3. SoloIdenticon Solo

    Спасибо lesha111 . Полезный комментарий.


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

Вы можете использовать следующие теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Spam Protection by WP-SpamFree