Заменить части URL на mod_rewrite - PullRequest
0 голосов
/ 17 сентября 2010

Мне нужно правило mod_rewrite для перенаправления URL в зависимости от имени хоста, с которого они приходят.

Ситуация:

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

domainname.com / images / logo.jpg и /www.domainname.com/images/logo.jpg должны преобразоваться в domainname.com/domainname_com/images/logo.jpg

Поэтому в основном мне нужно правило / функция, которая заменяет точки в% {HTTP_HOST} на _ и удаляет / заменяет поддомен www.

Есть ли способ сделать это с mod_rewrite?

1 Ответ

0 голосов
/ 17 сентября 2010

Попробуйте эти правила:

RewriteCond %{ENV:DOMAIN_DIR} ^$
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^images/.+ - [E=DOMAIN_DIR:%2]

RewriteCond %{ENV:DOMAIN_DIR} ^([^.]*)\.(.+)
RewriteRule ^images/.+ - [E=DOMAIN_DIR:%1_%2,N]

RewriteCond %{ENV:DOMAIN_DIR} ^[^.]+$
RewriteRule ^images/.+ %{ENV:DOMAIN_DIR}/$0 [L]

Первое правило возьмет хост и сохранит его без www. в переменной среды DOMAIN_DIR . Второе правило заменит одну точку за раз; флаг N позволяет перезапустить процесс перезаписи без увеличения внутреннего счетчика рекурсии. Наконец, третье правило перепишет запрос в соответствующий каталог.

...