如何阻止访问htaccess中的某些URL?

时间:2013-12-26 12:26:52

标签: .htaccess drupal

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

我想阻止.htaccess中对这些网址的访问。我尝试过以下内容并且有效:

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

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

如何在.htaccess

中屏蔽对这些网址的访问权限

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

虽然通过.htaccess这样做是完全可行的,但我会重新考虑这种方法并考虑将这些URL放入robots.txt中以供抓取机器人使用。这样,他们就会完全忽略它们,这对SEO来说肯定更健康。

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