2014-12-02 60 views
1

我有一个带有服务器和多个别名的apache虚拟主机。服务器是生产/活动域,别名是开发和登台服务器。例如:具有多个别名/域的Apache主机重写规则

ServerName foo.bar 
ServerAlias dev.superfoo.bar 
ServerAlias stage.superfoo.bar 

是否有将保持域,不管它可能是,只是重定向人域/ EN-US /什么域/ EN /任何一个重写规则?

我相信^/en-us /(.*)$ foo.bar/en/1$会为一个域做伎俩。有没有办法保留域名,而不是为每个别名编写规则?

回答

1

为了确保正确的域保留在每一个,你可以使用%{HTTP_HOST}变量重定向:

RewriteEngine On 
RewriteRule ^/en-us/(.*)$ http://%{HTTP_HOST}/en/$1 [L,R=301] 

[R=301]标志问题的永久301重定向,但在测试中,你可能需要使用302因为浏览器可能积极地缓存重定向,从而难以调试。

上面我使用了领先的/,如^/en-us。如果您在VirtualHost级别使用此规则,这将是必需的。但是,如果你在你的文档根目录使用.htaccess文件里面,你必须不包括/,如:

RewriteEngine On 
RewriteRule ^en-us/(.*)$ http://%{HTTP_HOST}/en/$1 [L,R=301] 

被注意到RewriteRule手册in the "what is matched" section的有关规则。

+0

感谢您的简洁和书面答复。并感谢您的链接。我觉得自己没有发现这种感觉很愚蠢。我无法正确写出我想要搜索的内容。 – peeDee 2014-12-02 04:02:54