Mod rewrite 如何链接mod_重写

Mod rewrite 如何链接mod_重写,mod-rewrite,Mod Rewrite,我需要一个简单的链接条件解决方案,但我总是以错误告终: 如果不是远程地址123.123.123.123 以及它的http主机ex.example.com 转到example.example.com 我想出了这个(不起作用): 我认为[C]标志可以处理这个问题,但它不能。我在这方面没有找到任何例子如果通过链接你的意思是一个RewriteCond依赖于前一个,你不需要[C] 它们已经通过隐式的和连接起来。因此,以下内容就足够了: RewriteCond %{REMOTE_ADDR} !=123.12

我需要一个简单的链接条件解决方案,但我总是以错误告终:

如果不是远程地址123.123.123.123 以及它的http主机ex.example.com 转到example.example.com

我想出了这个(不起作用):


我认为[C]标志可以处理这个问题,但它不能。我在这方面没有找到任何例子

如果通过链接你的意思是一个
RewriteCond
依赖于前一个,你不需要
[C]

它们已经通过隐式的
连接起来。因此,以下内容就足够了:

RewriteCond %{REMOTE_ADDR} !=123.123.123.123
RewriteCond %{SERVER_NAME} =ex.example.com [NC]
RewriteRule .* http://example.example.com%{REQUEST_URI} [R=301,L]
注意使用了
%{SERVER\u NAME}
而不是
%{HTTP\u HOST}


如果您的默认虚拟主机接受所有传入请求,那么依赖
HTTP\u-host
是不安全的,因为其值取自HTTP头字段
host:
,该字段可以伪造

谢谢,这个有用。如果我需要另一个IP地址,我应该在第一行和第二行之间添加另一行,并在第一行之后添加[OR]标志吗?注意:
RewriteCond%{REQUEST\u URI}(.*)
是完全冗余的。只需使用
%{REQUEST\u URI}
而不是
%1
。事实上,丹尼斯。你为什么不继续编辑我的答案呢。
RewriteCond %{REMOTE_ADDR} !=123.123.123.123
RewriteCond %{SERVER_NAME} =ex.example.com [NC]
RewriteRule .* http://example.example.com%{REQUEST_URI} [R=301,L]