本文介绍了使用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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-22 05:18