3

我正在尝试设置一个 htaccess 文件来完成以下任务:

仅当查看用户来自特定域(链接)时才允许查看我的网站

所以,例如。我有一个名为的域。保护.mydomain.com 。我只希望来自 unprotected.mydomain.com 链接的人能够访问protect.mydomain.com。

我遇到的最大的突出问题是,如果您从 unprotected.mydomain.com 访问protect.mydomain.com 并单击protect.mydomain.com 中的链接,该链接会转到protect.mydomain.com 下的另一个页面,那么我会被发送回到我的重定向,因为 http_referer 是 protect.mydomain.com 。因此,为了解决这个问题,我进行了检查以允许引荐来源网址为protect.mydomain.com。它不起作用,并且允许从任何地方访问。这是我的 htaccess 文件。(所有这些都在 https 下)

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} ^https://(.+\.)*mydomain\.com
RewriteCond %1 !^(protect|unprotected)\.$ 
RewriteRule ^.*$ https://unprotected.mydomain.com/ [R=301,L]
4

1 回答 1

5

您正在将您的推荐人与^https://(.+\.)*mydomain\.com. 这意味着,如果某个完全其他的站点,说指向Protect.mydomain.comhttp://stealing_your_images.com/上的某些内容的链接,第一个条件将失败,因此请求永远不会重定向到. 您想从另一个方向接近它,只允许某些引用者通过,然后重定向其他所有内容:https://unprotected.mydomain.com/

RewriteEngine On
RewriteBase /

# allow these referers to passthrough
RewriteCond %{HTTP_REFERER} ^https://(protect|unprotected)\.mydomain\.com
RewriteRule ^ - [L]

# redirect everything else
RewriteRule ^ https://unprotected.mydomain.com/ [R,L]
于 2012-09-11T17:14:38.020 回答