我有一个带服务器和多个别名的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$可以解决一个域名问题。有没有办法保留域而不是为每个别名编写规则?
答案 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}}注明了相关规则。