Начало » Linux » Използване на mod_rewrite на Apache Web

Функцията mod_rewrite улеснява работата на администратора и се използва за по-удобно достъпване на ресурси.
Когато се администрира уеб сървър, на който се хоства малко информация с малко потребители за администратора не е трудно ръчно да добавя виртуални хостове за всеки потребител.
Ако става дума за големи сайтове: например при уеб хостинг услуги, тази задача става времеемка(досадна) а в някои случаи дори и непосилна. Когато броят на потребители е значителен администрирането с така удобните скриптове “скроени” или пригодени от администратора става невъзможно. Самия конфигурационен файл нараства постепенно, с което се “товари” излишно сървъра.
В такъв случай на помощ се притичва mod_rewrite - много мощен и гъвкав модул на Apache Web Server. Този модул не е за всеки, но успее ли да се “увладее" става един незаменим помощник.
Ще покажем няколко примера с него. В тях е използван mod_rewrite за изграждане на под-домейнова структува от виртуални хостове с цената на няколко реда конфигурационен код:
Ако имаме множество под-домайни, вместо да описваме виртуален хост за всеки един от тях може с mod_rewrite да бъдат прихващани заявките към съответния поддомайни и да бъдат препра6тани към съответният ресурс. Ето и съответния код:
RewriteEngine On
RewriteMap lc int:tolower
RewriteCond %{HTTP_HOST} ^test.box$ [NC]
RewriteRule ^(.+) - [L]
RewriteCond %{HTTP_HOST} !.test.box$ [NC]
RewriteRule ^(.+) - [L]
RewriteCond %{HTTP_HOST} ^www.test.box$ [NC]
RewriteRule ^(.+) - [L]
RewriteCond %{HTTP_HOST} ^[^.]+.test.box$ [NC]
RewriteRule ^(.+) %{HTTP_HOST}=$1 [C]
RewriteRule ^(.*)=(.*) ${lc:$1}$2 [C]
RewriteRule ^([^.]+).test.box(.*) /www/$1/$2
...
RewriteEngine On
RewriteOptions Inherit
ServerName www.test.box
ServerAlias *.test.box www.test.box
ServerAdmin webmaster@test.box
ScriptAlias /cgi-bin/ /apache2/cgi-bin/
DocumentRoot /apache2/htdocs
TransferLog logs/www.test.box-log
ErrorLog logs/www.test.box-err
Единственото, което трябва да се добави в записа за test.box в DNS сървъра е:
www A 10.10.10.10
* CNAME www
В горният код самото препращане (“магията”) е дефинирано в последното правило:
RewriteRule ^([^.]+).test.box(.*) /www/$1/$2
Останалите редове от условия и правила са само за проверка.
И така коренните директории на новите под-домайни трябва да бъдат просто копирани в йерархията на /www в директории с имена на съответните поддомайни.
Например за sub1.test.box -> /www/sub1/index.html
Това правило много лесно и бързо може да се модифицира за създаване потребителски поддомайни. Много …
|
Коментари за Използване на mod_rewrite на Apache Web
A pod Windows kak shte izglejdat neshtata? i za
DocumentRoot kakvo se pishe?
- c:/program files/apache2/htdocs