MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
Apache: Редирект на URL и примеры использования mod_rewrite
10.01.2016
20:49
Раздел: Компьютер - Linux - Сеть в Linux - Apache

Для автоматического перенаправления на внешнюю страницу (при входе в директорию /test на вашем сайте пользователь будет перенаправлен на http://www.test.com/) можно использовать такую конструкцию в httpd.conf или .htaccess:


Redirect permanent /test http://www.test.com/


Или для файла test.html:


Redirect permanent /test.html http://www.test.com


Зашедших в test перенаправляем на www.test.com, оостальных на enter.test.com, (порядок следования записей важен !):

Redirect permanent /test http://www.test.com/

Redirect permanent / http://enter.test.com/


Рассмотрим оргинизацию редиректа при помощи mod_rewrite:


Для работы с mod_rewrite незабудьте статически собрать apache с поддержкой mod_rewrite или подключить модуль:


LoadModule rewrite_module libexec/mod_rewrite.so

AddModule mod_rewrite.c


http://www.engelschall.com/pw/apache/rewriteguide/

http://www.apache.org./docs/mod/mod_rewrite.html


Например, если необходимо чтобы вместо rewrite.htm заружался файл rewrite.html, добавьте в .htaccess:

RewriteEngine on

RewriteBase /

RewriteRule ^rewrite\.htm$ rewrite.html [R=permanent]


Для замены всех .htm фалов .html файлами:

RewriteEngine on

RewriteBase /

RewriteRule ^(.*)\.htm$ $1.html [R=permanent]


Пример манипуляции с переменными окружения (делаем редирект на .html если запрошен файл .htm и на диске есть одноименный .html файл):

RewriteEngine on

RewriteBase /


#Если .htm файл устанавливаем переменную окружения HTM=1

RewriteRule ^(.*)\.htm$ $1 [C,E=HTM:1]


#Проверяем существует ли файл на диске

RewriteCond %{REQUEST_FILENAME}.html -f


#Если существует делаем редирект

RewriteRule ^(.*)$ $1.html [S=1,R]


# если не сеществует и переменная окружения HTM=1 показываем запрошенный .htm

RewriteCond %{ENV:HTM} ^1$

RewriteRule ^(.*)$ $1.htm

Для ведения отдельньго лог файла со всеми пересылками нужно добавить в httpd.conf:


RewriteLog /var/log/apache/rewrite.log

RewriteLogLevel 1



← Содержание ...
 
MyTetra Share v.0.35
Яндекс индекс цитирования