Использование .htaccess для перенаправления по домену, либо в URL, либо в HTTP_HOST - PullRequest
0 голосов
/ 20 сентября 2011

Я размещаю несколько доменов на одном сервере Apache и хочу настроить их все так, чтобы / home был уникальным для каждого домена. (предположим, у меня есть 3 домена example.com example1.com и example2.com) Моя файловая структура настроена следующим образом ...

 /www/htdocs/domain/example
 /www/htdocs/domain/example1
 /www/htdocs/domain/example2

 http://example.com/home/   ==>  .../domain/example/
 http://example1.com/home/  ==>  .../domain/example1/
 http://example2.com/home/  ==>  .../domain/example2/

Итак, у меня есть правило htaccess, подобное этому

 RewriteCond %{HTTP_HOST} ^(.+)\.(.+)$ [NC]
 RewriteRule ^home/(.*)$ /domain/%1/$1 [L]

Это отлично работает. Но я хочу расширить его, чтобы включить www.example.com, поэтому я добавляю это правило.

 RewriteCond %{HTTP_HOST} ^(.+)\.(.+)\.(.+)$ [NC]
 RewriteRule ^home/(.*)$ /domain/%2/$1 [L]

Это прекрасно работает, и, как правило, я собирал свой файл .htaccess. Это становится довольно неприятным, и мне нужно переосмыслить свой подход. Поэтому я пытаюсь объединить два вышеуказанных правила в один блок. Вот что у меня есть, но оно не работает ...

 RewriteCond ^home/
 RewriteCond %{HTTP_HOST} ^(.+)\.(.+)$ [OR]
 RewriteCond %{HTTP_HOST} ^.+\.(.+)\.(.+)$ [OR]
 RewriteRule ^home/(.*)$ /domain/%2/$1 [L]

Дополнительно и отдельно я хотел бы, чтобы правило, которое приводило бы к следующему URL, возвращало ошибку 404.

http://example1.com/domain/example/logo.jpg

1 Ответ

0 голосов
/ 27 сентября 2011

Я отвечаю на свой вопрос.По крайней мере, первая часть.Я все еще ищу ответ на вторую часть.

RewriteCond %{REQUEST_URI} ^/home/
RewriteCond %{HTTP_HOST} ^.+\.(.+)\.(.+)$ [OR]
RewriteCond %{HTTP_HOST} ^(.+)\.(.+)$
RewriteRule ^home/(.*)$ /domain/%1/$1 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...