Цей модуль дозволяє переписувати URL сторінки на льоту - за спеціальними правилами, запит на URL з клієнтського браузера буде розбитий на частини і перероблений в інший URL перед виконанням запиту. Зазвичай це використовується для конвертування динамічної URL-адреси з параметрами в статичну з ім'ям файлу.
Приклади використання mod_rewrite, практичні рішення
Якщо вже є файл .htaccess, наприклад з таким вмістом
Options Includes +ExecCGI
AddType text/x-server-parsed-html .html
то просто додайте знизу код (запуск модуля із зазначенням кореневого URL)
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
# Блокування доступу до .htaccess
RewriteRule ^.htaccess$ - [F]
# Автоматичне перенаправлення на зовнішню сторінку (при вході в директорію /example користувач буде перенаправлений на http://www.example.org)
Redirect permanent /example.html http://www.example.org
# Перенаправлення всіх на сабдомен
Redirect permanent / http://test.example.org/
# Для заміни всіх .htm фалів .html файлами
RewriteRule ^(.*)\.htm$ $1.html [R=permanent]
# 301й Редирект
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=permanent,L]
# Відображення різних сторінок, залежно від IP-адреси відвідувача
SetEnvIf REMOTE_ADDR <192.0.43.10> REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /cool_page.htm
# Видалити /additionally/ зі шляху в адресі
RewriteRule ^additionally/(.+)$ httр://example.org/$1 [R=301,L]
# Перезапис URL адрес (перенаправлення з одного URL на інший) : RewriteRule поточний URL перезаписуваний URL
RewriteRule ^(.*)shop/(.*)$ $1cgi-bin/shop.cgi?$2
При запиті http://example.com/cgi-bin/shop.cgi?product1 URL відобразиться так: http://example.com/shop/product1 .
У такий спосіб можна перетворити динамічний сайт на сайт, що має статичну структуру.
# Перенаправлення домашніх каталогів для сторонніх
RewriteEngine on
RewriteCond %{REMOTE_HOST} !^.+\.yourdomain\.com$
RewriteRule ^(/~.+) http://www.example.org/$1 [R,L]
# Перенаправлення неіснуючих URL на інший сервер
RewriteEngine on
RewriteCond %{REQUEST_URI} !-U
RewriteRule ^(.+) http://example.org/$1
Додаткова інформація
Детальний опис модуля mod_rewrite можна переглянути в документації Apache за адресою http://httpd.apache.org/docs/current/mod/mod_rewrite.html .