【发布时间】:2012-07-16 20:58:39
【问题描述】:
我已经搜索了解决方案,但没有找到明确的答案 - 这有点超出我的领域,但我需要在紧要关头找到答案。
我使用 .htaccess 来验证并允许从外部链接访问某些网页。 这是我使用的示例:
AuthUserFile /dev/null
AuthGroupFile /dev/null
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://www.website_abc.com/
RewriteCond %{HTTP_REFERER} !^http://www.website_xyz.com/
RewriteRule /* http://www.mysite.com/denied_message.php [R,L]
这可以按我的意愿工作 - 我列出了我想要访问的站点并将 .htaccess 放在根目录中。
我的问题是,当有人从 HTTPS 链接时,即使他们在列表中,它也会阻止他们(我也尝试将 https 放入列表中)。 我找到了各种答案,但没有一个是我完全理解的或能解决问题的。
一个正在使用:
RewriteCond %{HTTPS} on
但这允许任何人从任何位置进入。
谁能帮我拼一下?
阿帕奇/灯
谢谢!
【问题讨论】:
-
顺便说一句,重写条件将所有流量定向到 https。因此,如果您的其他重写条件在 https 上不匹配,那么它将无法正常工作。更有经验的人将不得不评论那些新的重写条件。您是否有理由不想使用诸如 php 之类的脚本来执行此操作?在 php 中将非常容易。我不知道这个级别的东西是否可以在htaccess中完成。
-
它是那些“这就是它已经完成的方式”类型的项目之一。 在 php 中会非常简单 - 只要我可以继续将新的传入站点添加到列表等中,我对 php 替代方案(并且更熟悉)持开放态度。
-
是的,我会说你最好使用 PHP 并根据 $_SERVER['HTTP_REFERER'] 控制一切
-
现在我想知道是否需要查看 apache 配置中的设置 a ,因为我相信在 HTTP_REFERER 中捕获 https 时也存在同样的问题 - 我需要刷新我的记忆并看看那个。谢谢!
-
我还认为使用 htaccess 方法的最初吸引力在于一次性保护目录级别内的所有内容。
标签: apache .htaccess https lamp