【问题标题】:Authorizing access through htaccess with both http and https使用 http 和 https 通过 htaccess 授权访问
【发布时间】: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


【解决方案1】:
RewriteCond %{HTTPS} on

这增加了一个条件,即对您的站点的实际请求是通过 HTTPS。您只想匹配推荐人。我不确定您在引用者检查中添加 https:// 版本时尝试了什么,但是当我将它们放入空白的 htaccess 文件中时,这是可行的:

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^http://www.website_abc.com/
RewriteCond %{HTTP_REFERER} !^http://www.website_xyz.com/
RewriteCond %{HTTP_REFERER} !^https://www.website_abc.com/
RewriteCond %{HTTP_REFERER} !^https://www.website_xyz.com/

RewriteRule /* http://www.mysite.com/denied_message.php [R,L]   

【讨论】:

  • 我确实尝试过这种方法,但那些 https 用户被阻止并重定向到“拒绝消息”。也可能是对他们的一些限制,我无法控制,所以我需要找到另一种方法。
猜你喜欢
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
  • 2015-03-21
  • 1970-01-01
  • 2018-12-14
  • 2015-03-25
相关资源
最近更新 更多