使用.htaccess按域重定向,在URL或HTTP_HOST中

时间:2011-09-20 14:06:55

标签: apache .htaccess

我在同一个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]

此外,我想要一个规则,导致以下网址返回错误404。

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

1 个答案:

答案 0 :(得分:0)

我正在回答我自己的问题。至少第一部分。我仍然在寻找第二部分的答案。

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