Используйте mod_rewrite для принуждения пользователей к домашней странице при вводе сайта?

Проверьте поддержку Apache виртуальных именованных хостов, как описано в документации Apache 2.2. Если оба домена указывают на IP-адрес Вашего домашнего сервера в DNS, необходимо смочь быть в порядке с несколькими изменениями в конфигурационном файле Apache.

2
задан 6 June 2012 в 11:42
2 ответа

Конечно, с некоторыми возможными недостатки. Простая версия выглядит так:

RewriteCond %{HTTP_REFERER} !example.com
RewriteRule ^/. / [R]

Это проверяет, что реферер не содержит вашего доменного имени, а затем для любого URI, который имеет что-то после первой косой черты (т.е. любая страница, кроме домашней), отправляет пользователю перенаправление на домашнюю страницу.

Это полностью нарушит работу вашего сайта для любого пользователя, который не отправляет рефереры или не изменяет их. Например, некоторые приложения для обеспечения конфиденциальности меняют рефереры на http: // xxxxxxxxxxxxxxxxxxxxxxx , где количество x s соответствует длине исходного истинного реферера.

Если вы отправляете электронное письмо с изображение, связанное с вашим сайтом, приведенное выше правило нарушит и это.

Это также плохо для посетителей, которые переходят по ссылке на определенную страницу с другого сайта (например, Google). Затем они перенаправляются на домашнюю страницу и не знают, как вернуться на страницу, на которой они были. Эти посетители, скорее всего, нажмут кнопку «Назад» и выберут другой результат поиска. Вы можете сделать это немного лучше, изменив правило перезаписи.

RewriteCond %{HTTP_REFERER} !example.com
RewriteRule ^(/.+) /?prev=$1 [R]

Затем вы можете использовать свое приложение на домашней странице, чтобы предоставить обратную ссылку на страницу, на которой они находились. Вы также можете установить файлы cookie с помощью mod_rewrite, чтобы вместо этого внутри файла cookie мог существовать ? Prev = $ 1 .

Вероятно, существуют другие недостатки удобства использования, которые я не предвидел. Если вы реализуете это, вы должны внимательно следить за своими посетителями.

Я только что подумал об еще одном недостатке: боты редко отправляют рефереры. Если вы реализуете это так, как написано, и не ведете полный список желаемых ботов (пользовательские агенты и / или диапазоны IP-адресов) и отключите его для них, то ваш сайт будет недоступен для сканирования роботами поисковых систем.

Вы можете сделать это немного лучше, изменив правило перезаписи.

RewriteCond %{HTTP_REFERER} !example.com
RewriteRule ^(/.+) /?prev=$1 [R]

Затем вы можете использовать свое приложение на домашней странице, чтобы предоставить обратную ссылку на страницу, на которой они находились. Вы также можете установить файлы cookie с помощью mod_rewrite, чтобы вместо этого ? Prev = $ 1 мог существовать внутри файла cookie.

Есть, вероятно, другие недостатки удобства использования, которые я не предвидел. Если вы реализуете это, вы должны внимательно следить за своими посетителями.

Я только что подумал об еще одном недостатке: боты редко отправляют рефереры. Если вы реализуете это так, как написано, и не ведете полный список желательных ботов (пользовательские агенты и / или диапазоны IP-адресов) и отключите его для них, то ваш сайт будет недоступен для сканирования роботами поисковых систем.

Вы можете сделать это немного лучше, изменив правило перезаписи.

RewriteCond %{HTTP_REFERER} !example.com
RewriteRule ^(/.+) /?prev=$1 [R]

Затем вы можете использовать свое приложение на домашней странице, чтобы предоставить обратную ссылку на страницу, на которой они находились. Вы также можете установить файлы cookie с помощью mod_rewrite, чтобы вместо этого ? Prev = $ 1 мог существовать внутри файла cookie.

Есть, вероятно, другие недостатки удобства использования, которые я не предвидел. Если вы реализуете это, вы должны внимательно следить за своими посетителями.

Я только что подумал об еще одном недостатке: боты редко отправляют рефереры. Если вы реализуете это так, как написано, и не ведете полный список желательных ботов (пользовательские агенты и / или диапазоны IP-адресов) и отключите его для них, то ваш сайт будет недоступен для сканирования роботами поисковых систем.

Вы также можете установить файлы cookie с помощью mod_rewrite, чтобы вместо этого внутри файла cookie мог существовать ? Prev = $ 1 .

Вероятно, существуют другие недостатки удобства использования, которые я не предвидел. Если вы реализуете это, вы должны внимательно следить за своими посетителями.

Я просто подумал об еще одном недостатке: боты редко отправляют рефереры. Если вы реализуете это так, как написано, и не ведете полный список желательных ботов (пользовательские агенты и / или диапазоны IP-адресов) и отключите его для них, то ваш сайт будет недоступен для сканирования роботами поисковых систем.

Вы также можете установить файлы cookie с помощью mod_rewrite, чтобы вместо этого внутри файла cookie мог существовать ? Prev = $ 1 .

Вероятно, существуют другие недостатки удобства использования, которые я не предвидел. Если вы реализуете это, вы должны внимательно следить за своими посетителями.

Я просто подумал об еще одном недостатке: боты редко отправляют рефереры. Если вы реализуете это так, как написано, и не ведете полный список желательных ботов (пользовательские агенты и / или диапазоны IP-адресов) и отключите его для них, то ваш сайт будет недоступен для сканирования роботами поисковых систем.

4
ответ дан 3 December 2019 в 09:40

Вы можете использовать PHP:

Первое, что приходит мне в голову, это использование "$ _SERVER ['HTTP_REFERER']", однако это может быть отключено пользователем на клиенте сторона, если это показано или нет, насколько я обеспокоен, пожалуйста, поправьте меня, если я ошибаюсь. Итак, вы могли бы сделать что-то вроде Псевдокод:

if $myDomain is part of $_SERVER['HTTP_REFERER'] then
redirect
else
do nothing

Поскольку люди могут это изменить, вы можете ввести переменную сеанса в PHP. Псевдокод:

if empty( $_SESSION['newvisitor'] ) && !isset($_SESSION['newvisitor']) 
{
    $_SESSION['newvisitor'] = true;
}
else
{
   $_SESSION['newvisitor'] = false
}

if ( $_SESSION['newvisitor'] )
{
    #redirect to home
}

Итак, в основном сценарий сначала проверяет, установлена ​​ли переменная, если она не установлена, то это должен быть новый посетитель, поэтому он должен перенаправить на домашнюю страницу. Если это действительно установлено, перенаправление не должно выполняться.

РЕДАКТИРОВАТЬ: Признано, мое первое решение было неправильным, поскольку оно не могло соответствовать, если он действительно пришел с подстраницы.

1
ответ дан 3 December 2019 в 09:40

Теги

Похожие вопросы