使用http和https通过htaccess授权访问

时间:2012-07-17 21:12:38

标签: apache .htaccess https lamp

我一直在寻找解决方案而没有找到明确的答案 - 这有点偏离我的领域,但我需要在紧要关头找到答案。

我使用.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

但这允许任何人从任何地方进入。

有人可以为我拼写这个吗?

apache / LAMP

谢谢!

1 个答案:

答案 0 :(得分:2)

RewriteCond %{HTTPS} on

这会增加一个条件,即您网站的实际请求是通过HTTPS进行的。你只想匹配引用者。我不确定你在你的referer检查中添加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]