Разрешить только пользователям из определенного реферера (перенаправить остальные) - HTACCESS


Я пытался заблокировать доступ для всех, кто пытается увидеть А.php страница без перехода по моей конкретной ссылке отслеживания.

Я хочу, чтобы, если они не приходят по моей ссылке, они были перенаправлены на другой сайт. Я попробовал использовать .метод htaccess следующим образом:

    RewriteEngine On
RewriteBase /

# allow these referers to passthrough
RewriteCond %{HTTP_REFERER} ^http://subdomain.domain.com
RewriteRule ^ - [L]

# redirect everything else
RewriteRule ^ http://anotherDomain.com/ [R,L]

Потому что http://subdomain.domain.com является URL-адрес отслеживания, который перенаправляет на сайт.php но похоже, что не работает, и несмотря ни на какой реферер, или даже набрав url для вебсайт.php непосредственно в панели инструментов ведет пользователя на сайт.РНР.

Чего я хочу добиться, так это только от subdomain.domain.com пользователи могут видеть веб-сайт.php

Заранее благодарю.

1 2

1 ответ:

Вы можете сделать это с помощью order deny,allow, Поместите это в свой .htaccess:

order deny,allow
deny from all
allow from subdomain.domain.com

Это лишит всех доступа, если они не посетят через subdomain.domain.com

Затем для перенаправления пользователей, которые не приходят из subdomain.domain.com, Вы можете использовать:

RewriteCond %{HTTP_HOST} !^www\.subdomain.domain\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/?(.*)         http://www.example.com/$1 [L,R,NE]

Для Apache 2.4:

Вы можете использовать директиву IF, так как вы используете 2.4:

<If "%{HTTP_HOST} != 'www.subdomain.domain.com'">
Redirect / http://www.example.com/
</If>

И для order deny,allow Добавьте вокруг него следующее:

<Limit GET>
</Limit>