htaccess只接受来自特定http_referer的流量

Jos*_*osh 3 .htaccess

我正在尝试设置一个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]
Run Code Online (Sandbox Code Playgroud)

Jon*_*Lin 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]
Run Code Online (Sandbox Code Playgroud)