Drupal + .htpasswd:如何锁定开发站点但允许访问单个路径

时间:2011-02-02 16:32:56

标签: apache drupal .htpasswd

所以我有一个运行Drupal的开发站点设置。我用基本的HTTPAuth + htpasswd锁定了网站,以防止坏人。

问题是需要在此开发站点上从实际站点访问单个节点,即webform。

我的问题是:由于Drupal的复杂引导过程,我如何才能允许只访问 这个单个文件/ URL?

我的htpasswd的vhost配置:

<Directory />
   AuthUserFile /var/www/.htpasswd
   AuthName "my radbad dev site"
   AuthType Basic
   Require valid-user
</Directory>

我尝试过类似下面的内容但没有成功:

<Location "/node/1334">
   Allow from all
   Satisfy any
</Location>

3 个答案:

答案 0 :(得分:3)

你不能这样做,因为webform 不是一个文件,它是从你给Drupal的信息动态生成的(它放在数据库中)。所有Drupal URI(除了您上传的文件)都是index.php,将您发送到正确的位置。没有办法告诉httpauth有时index.php可以自由访问,有时它需要auth。

通过Drupal模块控制访问有几种选择,或者(如果你的实时网站是Drupal)你可以给它相同的webform,但是使用httpauth进行调整不会解决你的问题。

答案 1 :(得分:0)

<Location> - 在处理.htaccess后应用指令。这意味着,mod_rewrite已经完成了它的URL现在是/index.php?q=node/1334。这很糟糕,因为<Location>不能用于基于查询字符串的配置。有关详细信息,请参阅<Location> directiveHow the sections are merged

您必须提出一个完全不同的解决方案,例如在其他URL下使Drupal数据库可用,而无法从外部访问。

答案 2 :(得分:0)

如果要转到HTTP身份验证路由,请考虑the Secure Site module而不是编辑.htaccess并创建.htpasswd文件。这是一个容易出错的过程,而安全网站为您提供了一个表单,您可以使用该表单键入要排除安全保护的路径。更好的是,它使用Drupal身份验证系统,因此您可以根据Drupal角色和权限拒绝/允许人们访问该站点。