我在同一个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
答案 0 :(得分:0)
我正在回答我自己的问题。至少第一部分。我仍然在寻找第二部分的答案。
RewriteCond %{REQUEST_URI} ^/home/
RewriteCond %{HTTP_HOST} ^.+\.(.+)\.(.+)$ [OR]
RewriteCond %{HTTP_HOST} ^(.+)\.(.+)$
RewriteRule ^home/(.*)$ /domain/%1/$1 [L]