.htaccess - 如何编写 htaccess 重写规则来排除 IP 范围?

标签 .htaccess mod-rewrite

所以我刚刚实现了 AWS' CloudFront我需要将他们的 IP 范围排除在一些 htaccess 规则之外。以下是其范围的链接:https://forums.aws.amazon.com/ann.jspa?annID=910

这是我不希望他们使用的 htaccess 规则的示例:

# ROUTE CLOUDFRONT DOMAINS
rewritecond %{HTTP_HOST} ^www1.
rewriterule ^ http://www.domain.com%{REQUEST_URI} [L,R=301]

如何编写另一个 rewritecond [或多个]来忽略 204.246.160.0/19 范围?

最佳答案

您可以阻止(或允许)IP 地址范围,如下所示:

# block a range of IPs
RewriteCond %{REMOTE_ADDR} =204\.246\.160\.([0-9]|1[0-9])
RewriteRule ^ - [F,L]

特别是对于您现有的规则,您可以使用:

# if domain name has www1 at start
RewriteCond %{HTTP_HOST} ^www1\. [NC]
# but request not coming from 204.246.160.0/19 IP range
RewriteCond %{REMOTE_ADDR} !=204\.246\.160\.([0-9]|1[0-9])
# redirect to http://www.domain.com/uri
RewriteRule ^ http://www.domain.com%{REQUEST_URI} [L,R=301]

关于.htaccess - 如何编写 htaccess 重写规则来排除 IP 范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9199511/

相关文章:

apache - 在 Apache 服务器上使用 .htaccess 实现缓存控制

.htaccess - 子文件夹html文件中漂亮url的htaccess规则

javascript - 图像加载错误

apache - 使用mod_rewrite提供网页的移动版本

apache - 如何让谷歌将我的链接显示为 example.com NOT example.com/

PHP 如何处理使用 mod_rewrite 的单个入口点站点上不存在的 URL

php - CDN 中的版本控制

php - .htaccess 中的语言参数未正确映射

.htaccess - 强制尾随斜杠(特定文件夹除外)

php - 更新 max_input_vars 后仍收到 "Input Variables Exceeded 1000"错误