【问题标题】:How do I block access to certain URLs in htaccess?如何阻止对 htaccess 中某些 URL 的访问?
【发布时间】:2013-12-26 12:26:52
【问题描述】:

我有一个Drupal 网站,很少添加新内容。最近,越来越多的机器人访问各种 URL(节点/添加、用户/注册),返回 Drupal's“拒绝访问”页面。

我想在.htaccess 中阻止访问这些URL。我尝试了以下方法并且有效:

<IfModule mod_alias.c>
  Redirect 403 /node/add
  Redirect 403 /user/register
</IfModule>

但是,机器人仍然可以访问?q=node/add and ?q=user/register。我尝试在上面的代码中包含?q=,但没有成功。

如何在.htaccess 中阻止对这些网址的访问?

【问题讨论】:

    标签: .htaccess drupal


    【解决方案1】:

    您可以使用mod_rewrite 根据查询字符串进行url 操作。您需要类似下面的(未经测试的)代码。

    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^q=(node/add|user/register)$
    RewriteRule ^ - [F,L]
    

    这是做什么的?它匹配任何 url (^),然后检查查询字符串是否等于 q=node/addq=user/register。如果其中任何一个匹配,则不会重写 url (-),但会拒绝访问 [F] 并且此迭代的重写将停止 [L]

    【讨论】:

    • Sumurai8,感谢您的回复和解释。您的解决方案效果很好。
    【解决方案2】:

    虽然通过 .htaccess 执行此操作是完全可行的,但我会重新考虑这种方法并考虑将这些 URL 放入用于爬虫机器人的 robots.txt 中。这样一来,他们就会完全忽略它们,这对 SEO 来说肯定更健康。

    此外,您可以使用全局重定向模块 (https://drupal.org/project/globalredirect) 来确保只使用干净的 URL。

    【讨论】:

    • m1n0,谢谢您的回复。网址在 robots.txt 中,但我想这些访问来自垃圾邮件机器人,而不是来自爬虫机器人。我不知道全局重定向模块,我会尝试一下。
    猜你喜欢
    • 2015-05-15
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    相关资源
    最近更新 更多