所以我有一个运行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>
答案 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>
directive和How the sections are merged。
您必须提出一个完全不同的解决方案,例如在其他URL下使Drupal数据库可用,而无法从外部访问。
答案 2 :(得分:0)
如果要转到HTTP身份验证路由,请考虑the Secure Site module而不是编辑.htaccess并创建.htpasswd文件。这是一个容易出错的过程,而安全网站为您提供了一个表单,您可以使用该表单键入要排除安全保护的路径。更好的是,它使用Drupal身份验证系统,因此您可以根据Drupal角色和权限拒绝/允许人们访问该站点。