0

我已经寻找解决方案但没有找到明确的答案 - 这有点超出我的领域,但我需要在紧要关头找到答案。

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

但这允许任何人从任何位置进入。

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

阿帕奇/灯

谢谢!

4

1 回答 1

2
RewriteCond %{HTTPS} on

This adds a condition that the actual request for your site is through HTTPS. You only want to match the referer. I'm not sure what you've tried as far as adding https:// versions of what you have in your referer checks, but this works when I put them in a blank htaccess file:

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]   
于 2012-07-17T21:53:47.563 回答