我的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]
如果不对域名进行硬编码,我可以这样做吗?
答案 0 :(得分:4)
环境变量仅在RewriteCond
的左侧展开。但你可以使用这样的反向引用:
RewriteCond %{HTTP_HOST}/%{SERVER_NAME} !^([^/]+)/\1$
答案 1 :(得分:0)
域名是RewriteCond的CondPattern的一部分。
CondPattern在httpd的启动时呈现,因此它不能包含任何动态服务器变量..
所以这不起作用..