【问题标题】:Block URLs that don't contain query string阻止不包含查询字符串的 URL
【发布时间】:2014-01-02 20:50:22
【问题描述】:

使用 mod_rewrite 如何阻止 末尾包含查询字符串的 URL。

我的网站在几个不同的文件夹中使用 /get.php?page=blah

我看到很多机器人/东西在没有查询字符串的情况下击中每个文件 get.php。所以我想在没有 ?page=whatever

的情况下拒绝访问 get.php

我正在努力解决这个问题

RewriteCond %{THE_REQUEST} \^get.php$  [NC]  
RewriteRule .*  - [F]

我搜索的所有内容都是关于如何将查询字符串转换为友好的 URL,但这不是我想要实现的目标。

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite query-string


    【解决方案1】:

    您可以在DOCUMENT_ROOT/.htaccess 文件中使用此代码:

    RewriteEngine On
    
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule (^|/)get\.php$ - [NC,F]
    

    【讨论】:

    • 这对我不起作用我不认为这正是我的意思。我可能没有解释清楚。当 get.php 存在而没有附加到禁止的查询字符串时,我试图重定向它。查询字符串也不总是相同的。
    • 感谢更新,现在效果好多了:) 唯一的问题是它只能直接在 htaccess 文件所在的(根目录)中工作。它适用于 /get.php 但不适用于 /folder/get.php
    • 谢谢你,这正是我所希望的!我非常感谢您的帮助
    猜你喜欢
    • 2011-05-14
    • 2012-05-14
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多