我有多个虚拟服务器,这意味着同一域名有多个端口,如1234、5678、7890等,代码库相同。以下是详细信息:
域:www.whatever:1234.com
文件夹:/fool/
、/foo2/
、/foo3/
foo1/.htaccess:
RewriteEngine On
RewriteRule ^(.*)$ /foo2/$1 [L]
foo2/.htaccess:
RewriteEngine On
RewriteRule ^blah$ /foo3/a.html [L,R=301]
现在,预期的行为是:
www.whatever.com:1234/foo1/blah
重定向到www.whatever.com:1234/foo3/a.html
,
而在现实中,我认为它是:
www.whatever.com:1234/foo1/blah
重定向到www.whatever.com/foo3/a.html
端口号被删除!!
然而,如果我把R=301
放在foo1/.htaccess
中,那么有两个重定向,比如:
www.whatever.com:1234/foo1/blah
重定向到www.whatever.com:1234/foo2/blah
并再次重定向重定向到www.whatever.com:1234/foo3/a.html
但我不希望用户看到两个重定向。此外,我不想在foo2/.htaccess中硬编码主机名,因为我在不同的虚拟服务器上有相同的代码库。
我在foo1/.htaccess
中尝试了PT选项,但没有成功。那么,你能帮我一下吗?
您可以使用:
foo2/.htaccess:
RewriteEngine On
RewriteRule ^blah$ http://%{HTTP_HOST}:${SERVER_PORT}/foo3/a.html [L,R=301]