使用mod_rewrite到301来SERVER_NAME

时间:2010-11-01 18:30:02

标签: apache mod-rewrite

我的Apache vhost中有很多ServerAlias'es,我希望所有不是ServerName的域都是301'ed到ServerName。

这不起作用:

RewriteCond %{HTTP_HOST} !%{SERVER_NAME} [NC]
RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [R=301,QSA,L]

这确实有效:

RewriteCond %{HTTP_HOST} !www.some-domain.com [NC]
RewriteRule ^(.*)$ http://%{SERVER_NAME}/$1 [R=301,QSA,L]

如果不对域名进行硬编码,我可以这样做吗?

2 个答案:

答案 0 :(得分:4)

环境变量仅在RewriteCond的左侧展开。但你可以使用这样的反向引用:

RewriteCond %{HTTP_HOST}/%{SERVER_NAME} !^([^/]+)/\1$

答案 1 :(得分:0)

域名是RewriteCond的CondPattern的一部分。

CondPattern在httpd的启动时呈现,因此它不能包含任何动态服务器变量..

所以这不起作用..