[英]Htaccess doesn't redirect request to php script
我有 2 个 vps:
两者都安装了 VestaCP 相同的配置(apache 作为后端,nginx 作为前端)。
有相同的脚本,在第二台服务器上不起作用。
.htaccess 规则:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|png|gif)$ [NC]
RewriteCond %{REMOTE_ADDR} !^(127.0.0.1)$ [NC]
RewriteCond %{HTTP_USER_AGENT} (bad|useragents) [NC]
RewriteRule (.*) script.php?src=$1 [L]
</IfModule>
笔记 :
它可能是什么? 我试图调试 apache 日志,找到请求不重定向的原因,但 apache LogLevel debug
没有显示任何错误。
正如@Phil 所说,问题出在REMOTE_ADDR
在工作服务器标头上:
[HTTP_X_FORWARDED_FOR] => CLIENT_IP
[SERVER_NAME] => sitename.org
[SERVER_ADDR] => SERVER_IP
[SERVER_PORT] => 80
[REMOTE_ADDR] => CLIENT_IP
不工作的服务器:
[HTTP_X_REAL_IP] => CLIENT_IP
[HTTP_X_FORWARDED_FOR] => CLIENT_IP
[SERVER_NAME] => sitename.org
[SERVER_ADDR] => SERVER_IP
[SERVER_PORT] => 80
[REMOTE_ADDR] => SERVER_IP
如您所见,“不工作”服务器返回标头SERVER_ADDR
和REMOTE_ADDR
服务器 IP。
所以,为了让它工作,我的代码是:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|png|gif)$ [NC]
RewriteCond %{HTTP_X_REAL_IP} !^(127.0.0.1)$ [NC]
RewriteCond %{HTTP_USER_AGENT} (bad|useragents) [NC]
RewriteRule (.*) script.php?src=$1 [L]
</IfModule>
现在的问题是 - 如何将客户端 IP 放入REMOTE_ADDR
或更好地修复 .htaccess 并将其更改为HTTP_X_REAL_IP
? 哪种方式是“正确的方式”? 我还没有找到快速解决方案,现在只是将 htaccess 更改为HTTP_X_REAL_IP
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.