具有多个别名/域重写规则的Apache主机

时间:2014-12-02 03:07:54

标签: apache .htaccess mod-rewrite

我有一个带服务器和多个别名的apache vhost。服务器是生产/活动域,别名是开发和登台服务器。例如:

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

是否有重写规则可以保留域名,无论它是什么,只是将人们从domain / en-us / anything重定向到domain / en / anything?

我相信^ / en-us /(.*)$ foo.bar/en/1$可以解决一个域名问题。有没有办法保留域而不是为每个别名编写规则?

1 个答案:

答案 0 :(得分: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手册{/ 3}}注明了相关规则。