0

Apache 服务器上的情况(目录树):

maindomain.com/
|
|_ .htaccess (just an empty file, no rule in here)
|
|_ addondomain1.com/
|  |
|  |_ .htaccess
|  |_ index.html
|
|_ addondomain2.com/
   |
   |_ .htaccess
   |_ index.html

目前 addondomain1.com 中的文件可以通过以下方式查看:

http://www.addondomain1.com/index.html
http://www.addondomain1.com/
http://www.addondomain1.com
http://www.maindomain.com/addondomain1.com/index.html

我想重定向所有请求:

http://maindomain/addondomain1.com/some/path/anypage.html(带或不带'www')

到相同的路径/文件,但在 addondomain1.com 下,并且始终使用“www”:

http://www.addondomain1.com/some/path/page.html

为了尝试做到这一点,我放置了maindomain.com/addondomain1.com/.htaccess这条规则:

RewriteCond %{HTTP_HOST} !^www\.addondomain1\.com$ 
RewriteRule ^(.*)$ "http://wwww.addondomain1.com/$1" [R=301,L]

这个效果几乎很好,并且可以很好地重定向以下所有内容:

http://addondomain1.com/index.html >> http://www.addondomain1.com/index.html
http://www.addondomain1.com/ >> http://www.addondomain1.com/
http://www.addondomain1.com  >> http://www.addondomain1.com
http://www.maindomain.com/addondomain1.com/index.html >> http://www.addondomain1.com/index.html
http://www.maindomain.com/addondomain1.com/ >> http://www.addondomain1.com/
http://maindomain.com/addondomain1.com/ >> http://www.addondomain1.com/

但不幸的是,当去:

http://maindomain.com/addondomain1.com
http://www.maindomain.com/addondomain1.com

注意上面的两个链接都没有最后的斜线,它重定向到:

http://www.addondomain1.com//server/root/path/addondomain1.com

我认为正则表达式^(.*)$将“addondomain1.com”作为一部分,因为缺少最后的斜杠。你知道如何修复/解决这个问题吗?

谢谢!

4

2 回答 2

0
DirectorySlash Off
于 2010-07-13T23:28:12.480 回答
0

试试这个:

RewriteCond %{HTTP_HOST} !^www\.addondomain1\.com$
RewriteCond %{REQUEST_URI} ^/[^/]+/(.*)
RewriteRule ^ http://wwww.addondomain1.com/%1 [R=301,L]
于 2010-09-30T10:23:54.567 回答