Про mod_rewrite в прикладах



Найбільш поширені приклади застосування модуля mod_rewrite, що цей модуль собою являє. Зазвичай цей модуль використовують для перетворення динамічного URL з параметрами у статичний з іменем файлу.

* mod_rewrite - програмний модуль веб-сервера Apache.
* Цей модуль дозволяє за спеціальними правилами «переписувати» URL сторінки «на льоту», URL буде розбитий на частини, проаналізований та перероблений в інший URL перед виконанням запиту.
* Деякі директиви даного модуля можуть використовуватися лише в конфігураційному файлі самого веб-сервера, інші ж - в спеціальних файлах «.htaccess», які можна розташовувати в підкаталогах ієрархії вашого сайту. Саме ці директиви з файлу «.htaccess» і роблять основну роботу по перетворенню HTTP-лінків.
* Для роботи цього методу Ви повинні створити і завантажити файл під назвою «.htaccess» в папку сервера, з якою ви працюватимете (або, якщо у вас є доступ, то можете працювати з файлом «httpd.conf»).

Як зазначають досвідчені програмісти, потрібно бути дуже обережним при роботі з цим модулем. Деякі помилки, які Ви здатні допустити, можуть привести до логічної петлі, яка призведе до безперервного 100%-го завантаження центрального процесора.

Декілька стандартних змінних (змінні записуються у вигляді %{ІМ’Я_ЗМІННОЇ}), які використовуються в прикладах:

* REQUEST_URI - рядок запиту без імені хоста і параметрів запиту;
* QUERY_STRING - параметри запиту;
* REMOTE_ADDR - IP-адреса користувача;
* REMOTE_HOST - ім’я хоста відвідувача;
* HTTP_USER_AGENT - вміст HTTP-заголовка User-Agent;
* HTTP_REFERER - вміст HTTP-заголовка Referer;
* HTTP_HOST - ім’я хоста веб-сайту;
* REQUEST_FILENAME - ім’я файлу з REQUEST_URI;
* Всі змінні TIME_* зберігають розбиті на частини поточну дату і час.

Як дозволити викачувати малюнки з поточного сайту і заборонити викачування через чужі посилання?

RewriteEngine On
RewriteCond %{REQUEST_URI} /img/
RewriteCond %{HTTP_REFERER} !^.*somedomain\.ua.* [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .* /empty.png [L]

Як організувати редірект (англ. «redirect») на іншу сторінку?

RewriteCond %{HTTP_HOST} ^www.domain1.ua$ [NC]
RewriteRule (.*) http://www.domain2.ua/$1 [RL]

Як перекидати користувача з www.mysite.com на mysite.com, тобто на адресу без www?

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.
RewriteRule ^(http://www.)(.*)$ http://$2 [L]

Як захистити від несанкціонованого доступу файл «.htaccess». Якщо хтось намагається дістати доступ до файлу «.htaccess», видається помилка, яка повідомляє, що доступ до файлу заборонений.

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^.htaccess$ - [F]

Як заборонити спам-роботові під вигаданою назвою «EmailFinder» (мається на увазі ім’я User-Agent’а) ходити по сайту:

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^EmailFinder
RewriteRule ^.*$ - [F]

Як заблокувати павука, що прийшов зі сайту www.site.com.ua:

RewriteCond %{REMOTE_HOST} ^www.site.com.ua$
RewriteRule ^.*$ - [F]

Якщо потрібно заблокувати певну IP-адресу, то умова виглядатиме так:

RewriteCond %{REMOTE_ADDR} ^196.36.61.11$
RewriteRule ^.*$ - [F]

«Перепишемо» URL сторінки «на льоту», тобто зробимо так, щоб до сторінки на сайті mysite.com.ua можна було доступитися не лише за адресою

http://www.mysite.com.ua/cgi-bin/shop.cgi?product_id

але й за більш привабливою і зручною для людського ока:

http://www.mysite.com.ua/shop/product_id

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)shop/(.*)$ $1cgi-bin/shop.cgi?$2

Ось так можна закрити доступ до веб-сайту в робочий час (з 10:00 до 19:00):

RewriteCond %{TIME_HOUR}%{TIME_MIN} >1000
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
RewriteRule .* - [F]

Google
 



© Copyright 2008-2017 - Створення сайту : intersite.net.ua - All Rights Reserved

Не знайшли відповідь на своє питання? Спробуйте задати його на підтримці хостингу: https://uahosting.com.ua/contacts.php