Apache RewriteRule第二个内部重定向无法正常工作

时间:2014-04-24 21:21:01

标签: apache .htaccess mod-rewrite

我有多个虚拟服务器 - 意味着具有多个端口的相同域名,如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选项,但这不起作用。那么,请你帮帮我吗?

1 个答案:

答案 0 :(得分:0)

您可以使用:

foo2的/ htaccess的:

RewriteEngine On
RewriteRule ^blah$ http://%{HTTP_HOST}:${SERVER_PORT}/foo3/a.html [L,R=301]