如何根据查询字符串在 apache mod_rewrite 中禁止 url?

Posted

技术标签:

【中文标题】如何根据查询字符串在 apache mod_rewrite 中禁止 url?【英文标题】:How do I make a url forbidden in apache mod_rewrite, based on the query string? 【发布时间】:2010-11-08 09:58:51 【问题描述】:

如何在 apache 中禁止以下网址;

main/index.php?site=ing

我尝试了以下方法;

RewriteRule ^main/index.php?site=ing - [F]

但没有运气......

【问题讨论】:

我在标题和标签中都添加了“查询字符串”,因此搜索查询字符串和 mod_rewrite 问题的人会找到这个。 【参考方案1】:

你cannot match a query string in the RewriteRule,你该做的

RewriteCond %QUERY_STRING site=ing     #Adjust the regexps with anchors
RewriteRule ^main/index.php - [F]

【讨论】:

【参考方案2】:

应该这样做:

RewriteCond %QUERY_STRING (^|&)site=ing(&|$)
RewriteRule ^main/index\.php$ - [F]

【讨论】:

【参考方案3】:

另一个非 apache 解决方案是在 index.php 文件中执行此操作。

在页面顶部添加类似的内容。

if(isset($_GET['site']) && $_GET['site'] == 'ing')
    header('HTTP/1.1 403 Forbidden');
    exit();

【讨论】:

以上是关于如何根据查询字符串在 apache mod_rewrite 中禁止 url?的主要内容,如果未能解决你的问题,请参考以下文章

如何在查询字符串中传递数组?

如何在查询字符串中传递数组?

在一个表中如何根据订单号查询订单,用sql语句

从查询字符串 Apache 中删除尾部斜杠

Apache2重写查询字符串转义两次

HiveQL:如何编写查询以根据嵌套的 JSON 数组值选择和过滤记录