本文介绍了使用mod_rewrite为301 SERVER_NAME的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在我的Apache的虚拟主机很多ServerAlias'es,我想这不是服务器名称被301'ed到服务器名称的所有域。
I have many ServerAlias'es in my Apache vhost and I want all domains that aren't the ServerName to be 301'ed to the 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]
我能做到这一点,而不硬编码的域名?
Can I do this without hard coding the domain name?
推荐答案
环境变量仅扩大了的RewriteCond
的左侧。但是你可以使用反向引用这样的:
Environment variables are only expanded on the left hand side of RewriteCond
. But you can use backreferences like this:
RewriteCond %{HTTP_HOST}/%{SERVER_NAME} !^([^/]+)/\1$
这篇关于使用mod_rewrite为301 SERVER_NAME的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!