我正在尝试设置一个可以完成以下操作的htaccess文件:
如果查看用户来自特定域(链接)
,则仅允许查看我的网站所以,例如。我有一个名为的域名。 protect.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]
答案 0 :(得分:5)
您正在将您的引用与^https://(.+\.)*mydomain\.com
匹配。这意味着如果某个完全其他网站(例如http://stealing_your_images.com/
链接到 protect.mydomain.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]