php - 基于 HTTP :X-FORWARDED-FOR 允许在 htaccess 中访问

标签 php apache .htaccess mod-rewrite

嗨,我应该只允许特定的 IP 地址(即 HTTP:X-FORWARDED-FOR 地址)访问文件。我已经通过以下方式做到了

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP:X-FORWARDED-FOR} !^xxx.xxx.x.xx$
RewriteRule ^$ http://xxx.xxx.x.xx/access_denie.php [R=301,L]

现在我必须允许它用于多个 ip,例如 yyy.yy.y.yy。我如何使用 htaccess 做到这一点

最佳答案

^xxx.xxx.x.xx$RewriteCond 部分只是一个正则表达式。您可以轻松地使用组添加更多 IP 地址:

^(xxx\.xxx\.x\.xx|yyy\.yy\.y\.yy)$

您会注意到我用反斜杠转义了所有 . s - 这是因为 . 在正则表达式中具有特殊含义,如果您希望它只匹配文字 . 字符,则需要对其进行转义。

因此,您的新 RewriteCond 将如下所示:
RewriteCond %{HTTP:X-FORWARDED-FOR} !^(xxx\.xxx\.x\.xx|yyy\.yy\.y\.yy)$

您可以轻松添加更多 IP 地址,只需使用 | 字符将它们分开即可。

但是请注意,这种方法不会给您任何真正的安全性。欺骗请求以绕过这一点很容易。如果您需要安全性,则应改用 SSL 和适当的身份验证系统。

关于php - 基于 HTTP :X-FORWARDED-FOR 允许在 htaccess 中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13931765/

相关文章:

javascript - PHP AJAX JSON 迭代

php - 使用 C 或 C++ 库作为 PHP 扩展

javascript - 如何使用 PHP 从动态网页中抓取页面链接?

php - apache2 服务重启失败 - 无法启动 apache2.service : Unit not found

Apache Conf - FilesMatch 只允许在当前文件夹中,而不是子文件夹中

apache - htaccess 重写传递两个变量或一个变量是否可用?

php - htaccess 重定向未按预期工作

PHP 7 Bool 类型提示不工作

apache - 在特定目录上使用 mod_evasive

apache - 在 Apache 中安装 SSL 时出错