Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache重写代理标志更改客户端IP地址_Apache_.htaccess - Fatal编程技术网

Apache重写代理标志更改客户端IP地址

Apache重写代理标志更改客户端IP地址,apache,.htaccess,Apache,.htaccess,我使用htaccess文件将所有子目录重定向到index.php文件,并将目录名作为变量传递。我使用代理[P]标志来防止URL在访问者的浏览器中重定向/更改 RewriteCond %{REQUEST_URI} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.+[^/])(.*)$ https://domain.com/index.php?user=$1 [P,L,NC] 但是,索引页使用$_SERVER[“REMOTE_ADDR

我使用htaccess文件将所有子目录重定向到index.php文件,并将目录名作为变量传递。我使用代理[P]标志来防止URL在访问者的浏览器中重定向/更改

RewriteCond %{REQUEST_URI} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.+[^/])(.*)$ https://domain.com/index.php?user=$1 [P,L,NC]
但是,索引页使用$_SERVER[“REMOTE_ADDR”]跟踪访问者的IP地址。当我测试根域时,这很好,但是子目录都显示为相同的内部IP地址(即由于代理)


我怎么能两全其美呢?i、 e.在浏览器中保持URL静态,但在这两种情况下都能获得真正的客户端IP?

Apache会设置一些额外的头来帮助您处理此问题。您需要修改后端以检查除客户端IP之外(或代替)的标头。根据检查的原因,如果请求来自代理的IP,则最好只检查该标头,因为标头可能会被欺骗

詹姆斯-谢谢。。。这使我朝着正确的方向前进。对于需要它的用户,更新配置后,获取代理转发IP的PHP调用是$\u SERVER[“HTTP\u X\u forwarded\u For”]。

如果您希望浏览器中的地址保持不变,只需不执行外部重定向-将其设为内部重定向,并放弃代理转发。