Как перенаправить первого посетителя с помощью htaccess - PullRequest
0 голосов
/ 20 августа 2011

Как перенаправить нового пользователя на специальную целевую страницу, используя htaccess на основе реферера? Я имею в виду, если они пришли из другого домена, то они впервые посетитель?

Я действительно новичок в переписывании URL, и объяснение было бы здорово.

Примечание: целевая страница - не что иное, как скрипт php, который обнаруживает браузер. На этой странице я буду использовать cookie, но мне нужно будет перенаправить пользователя, если реферер пустой или находится в другом домене.

Ответы [ 3 ]

1 голос
/ 20 июля 2014

Я предлагаю это:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^(www\.)?(https?://)?example\.com[NC] 
RewriteCond %{REQUEST_URI} !^/welcome.html [NC] 
Rewriterule ^(.*)$ http://example.com/welcome.html [r=307,L]

Первая проверка RewriteCond, содержит ли referer ваше доменное имя, и вторая проверка, не перенаправлены ли вы RewriteRule. RewriteRule переносит вас на страницу приветствия как правило [L] ast.

0 голосов
/ 02 октября 2018

Извините, что снова разогрел старый стейк .. Мне все равно было бы интересно узнать, знает ли кто-нибудь решение этой проблемы - без использования файлов cookie или функций HTML5 ...

Я прочитал здесь что HTTP_REFERER может быть пустым.Вот почему этот метод перенаправления не подходит для этого приложения?Я экспериментировал с этим на своем сервере, но ближайший результат работы всегда перенаправлялся на мою целевую страницу index.htm, что нежелательно.

Может ли это правило мешать другим правилам перезаписи?

Также в первом фрагменте есть ошибка:

И я думаю, что флаг NC в последнем фрагменте не имеет смысла.Разве это не должно быть L?

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^(www\.)?(https?://)?example\.com[NC] 
#missing space after .com and before [----------------here----^
RewriteCond %{REQUEST_URI} !^/welcome.html [NC] 
Rewriterule ^(.*)$ http://example.com/welcome.html [r=307,L]


RewriteEngine on
RewriteCond %{HTTP_REFERER} ^(www\.)?(https?://)?(?!example\.com) [NC]
Rewriterule ^(.*)$ http://example.com/welcome.html [r=307,NC]
#Should this flag not be L? ------------------------------^
0 голосов
/ 21 августа 2011

Как насчет перенаправления использования, если его реферер не является вашим доменом?

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^(www\.)?(https?://)?(?!example\.com) [NC]
Rewriterule ^(.*)$ http://example.com/welcome.html [r=307,NC]

Это означает, что пользователь будет перенаправлен на welcome.html, если он пишет example.com в адресной строке или приходитссылка на другом сайте.Когда он будет на вашем сайте, он больше не будет перенаправлен, если он загрузит другую страницу на вашем сайте.

PS AFAIK, вы можете использовать куки в PHP, который генерирует простую HTML-страницу.*

Редактировать: Обновить проверенный код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...