繁体   English   中英

Htaccess 不会将请求重定向到 php 脚本

[英]Htaccess doesn't redirect request to php script

我有 2 个 vps:

  1. Centos 7 / PHP 7.0 / Apache 2.4.6
  2. Ubuntu 18 / PHP 7.2 / Apache 2.4.29

两者都安装了 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 mod_rewrite 已开启且有效
  • 直接执行脚本作品

它可能是什么? 我试图调试 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_ADDRREMOTE_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM