Apache RewriteRule第二个内部重定向不起作用



我有多个虚拟服务器,这意味着同一域名有多个端口,如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]

最新更新