gpt4 book ai didi

http - apache httpd - RewriteCond SERVER_NAME 不等于 SERVER_ADDR

转载 作者:可可西里 更新时间:2023-11-01 15:20:07 24 4
gpt4 key购买 nike

如果 SERVER_ADDRSERVER_NAME 变量不匹配,我需要重定向用户。

我的 httpd.conf 文件中有以下规则:

RewriteEngine on
RewriteCond %{SERVER_NAME} !%{SERVER_ADDR}
RewriteRule .* /myRedirectPage.html [PT]

当 SERVER_NAME 和 SERVER_ADDR 不匹配时,我会正确地进行重定向。 但是,即使它们匹配,我也会被重定向。

如果我使用以下条件,它适用于匹配和非匹配场景:(其中 192.168.1.1 是服务器 IP)

RewriteCond %{SERVER_NAME} !192.168.1.1

为了检查变量是否匹配,我使用了 PHP 的 $_SERVER['SERVER_NAME']$_SERVER['SERVER_ADDR'] 变量。

如果 SERVER_NAMESERVER_ADDR 匹配,我应该如何编写 RewriteCond 以便它不会重定向用户?

最佳答案

您不能在 RewriteCond 的右侧使用服务器变量,因此您匹配的是文字字符串 "%{SERVER_ADDR}",而不是变量,因此,因为您的匹配是否定(“!”),规则总是匹配。

我认为你可以做这样的事情,尽管我自己从未使用过这种特殊格式:

RewriteCond %{SERVER_NAME},%{SERVER_ADDR} ^(.*),\1

这个想法是你在做两次匹配 - 你正在匹配 %{SERVER_NAME} 与任何东西(总是匹配)并捕获结果,然后匹配 %{SERVER_ADDR} 反对对第一个匹配项的反向引用,这是 %{SERVER_NAME} 的匹配项。

同样,我自己并没有使用过这样的规则,只是阅读了一下,所以它可能需要一些调整。

关于http - apache httpd - RewriteCond SERVER_NAME 不等于 SERVER_ADDR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14613252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com