Маскировка URL/переадресация/перенаправление

У меня есть веб-сайт, размещенный на 000webhost, а платный домен был куплен у 1and1. 1and1 предлагает перенаправление URL-адресов с помощью HTTP или перенаправления кадров, но я решил указать платный домен на серверы имен 000webhosts.

В настоящее время это работает до такой степени, что когда я ввожу платный домен (www.paiddomain.co.uk), он указывает мне правильный веб-сайт (www.freedomain.com). Оказавшись на этой странице, любая страница, на которую щелкнули, отображается в адресной строке как www.freedomain.com/link, тогда как я хочу, чтобы она отображалась как www.paiddomain.com/link.

Как лучше всего это сделать?


person green4rrow    schedule 23.12.2012    source источник


Ответы (3)


Терминология

  • исходный сервер - сервер, который предоставляет исходный контент
  • прокси-сервер — сервер, который находится посередине между клиентом и исходным сервером.

В вашем случае исходным сервером является Freedomain.com. Похоже, вы отказались от прокси-сервера и просто указали DNS на исходный сервер.

Причина

Первая страница загружается нормально, потому что она доступна для двух доменов. Однако доставленный HTML-контент имеет абсолютные ссылки на исходный сервер. Поэтому, когда клиент нажимает на нее, они переходят непосредственно на исходный сервер.

Без прокси-сервера у вас есть два варианта

  1. Заставьте исходный сервер генерировать абсолютные ссылки на нужный вам домен.
  2. Заставьте исходный сервер генерировать относительные ссылки.

Это зависит от того, как создаются ваши страницы (статический html, drupal, wordpress, пользовательское приложение). Но чистый эффект заключается в том, что ваши ссылки будут генерироваться следующим образом:

<a href="http://www.paiddomain.com/link">absolute URL</a>

или вот так:

<a href="/link">relative URL</a>

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

Для систем, которые генерируют абсолютный URL-адрес, они обычно имеют переменную, которая хранит «URL-адрес сайта», «базовый URL-адрес» или что-то подобное либо в их конфигурации, либо в базе данных.

С прокси-сервером

Вы можете попросить свой прокси-сервер преобразовать ссылки (и файлы cookie и т. д.) с freedomain.com на paiddomain.com. Это зависит от прокси-сервера, в Apache вы должны использовать ProxyPassReverse.

1and1 явно не хочет быть вашим прокси-сервером: http://faq.1and1.com/domains/domain_admin/domain_dest/3.html Они готовы предоставить фрейм (плохая закладка) или HTTP-перенаправление (изменение URL-адреса).

person Amir T    schedule 23.12.2012
comment
Амир, я пробовал использовать метод из 1and1 faq. Если мне не нужно делать что-то еще, этот метод просто сохраняет «paiddomain.com» в адресной строке при нажатии на ссылку вместо отображения платного домена.com/ссылка1 или платного домена.com/ссылка2. - person green4rrow; 24.12.2012
comment
Хорошо, тогда они на самом деле не хотят быть прокси-сервером, просто предоставляя фрейм или перенаправление HTTP. Я думаю, что это оставляет вам варианты без прокси-сервера. Редактирование моего ответа. - person Amir T; 24.12.2012
comment
Амир, есть идеи, как это сделать на 000webhost? Я использую opencart в качестве бэкэнда, что означает, что весь сайт написан на php. Ценю твою помощь - person green4rrow; 24.12.2012
comment
Обычно существует способ установить значение URL-адреса для того, что сайт считает своим собственным URL-адресом. Попробуйте система-›настройки-›общие-›ссылка на сайт opencart-tutorials.com/opencart- tutorials-configuration.html в качестве альтернативы, если его URL-адреса вычисляются из переменных PHP env, вам нужно будет переопределить его. - person Amir T; 24.12.2012
comment
Другой способ попробовать opencart: forum.opencart.com/viewtopic.php?f =20&t=86595 - person Amir T; 24.12.2012
comment
Амир, ты просто звездный друг. Я ломал голову, рылся в сети не менее 2 часов в поисках этого ответа. Вы знакомы с opencart? Можно более конкретный вопрос, если да - person green4rrow; 24.12.2012
comment
@ green4rrow нет, не знаком с opencart, просто общие принципы проксирования :-) Тогда это сработало для вас? - person Amir T; 24.12.2012
comment
Прекрасно. Посмотрите, если хотите - habitar.co.uk Единственное, что мне нужно очистить для целей SEO, это когда вы нажимаете на логотип и некоторые другие аспекты, такие как учетная запись. URL-адрес не такой чистый, как хотелось бы, например. habitar.co.uk/index.php?route=common/home - person green4rrow; 24.12.2012
comment
@green4rrow круто, не стесняйтесь принять ответ на этот вопрос :-) попробуйте погуглить чистые URL-адреса opencart для SEO-вещей, возможно, конфигурацию и набор правил перезаписи. - person Amir T; 24.12.2012
comment
Я сделал, братан, версия opencart, которую я использую (1.5.x), уже имеет чистые URL-адреса SEO в качестве встроенной функции для большинства продуктов, категорий и т. д. Просто не хватает немного больше, что действительно должно было быть встроено , Все, что я нашел до сих пор, это платные расширения для opencart и vqmods, которые похожи на xml-файлы патчей. Я хочу научиться делать это вручную, поскольку в настоящее время он извлекает более чистые URL-адреса из таблицы базы данных с помощью php-скрипта. Я думаю, мне просто нужно настроить эти. Буду искать. Ценю всю вашу помощь - person green4rrow; 24.12.2012

С RedirectRule в файле .htaccess:

Пример — перенаправление с www.freedomain.com/link на www.paiddomain.com/link:

RewriteEngine On
RewriteCond %{HTTP_HOST} !www.freedomain.com/link$ [NC]
RewriteRule ^(.*)$ http://www.paiddomain.com/link/$1 [L,R=301]

Подробнее

person asgoth    schedule 23.12.2012
comment
требует ли этот выше метод, чтобы я делал это для каждой ссылки на моей странице? - person green4rrow; 24.12.2012
comment
спасибо, но выполнение этого на уровне docroot приводит к сообщению об ошибке Google, в котором говорится, что существует цикл перенаправления. есть идеи? - person green4rrow; 24.12.2012
comment
Это будет означать, что каждый раз, когда кто-то щелкает ссылку, он сначала переходит на Freedomain.com/link и перенаправляется на платный домен.com/link. Это будет довольно быстро, поэтому они могут этого не заметить, но все равно будет немного противно. - person Amir T; 24.12.2012

Я столкнулся с той же проблемой при использовании перенаправления кадров, предлагаемого 1and1. На моей странице были абсолютные URL-адреса внешнего сайта, и при нажатии они загружали пустую страницу с моим доменом 1 и 1 в строке заголовка.

Chrome вывел эту ошибку:

'absolute link to external site' in a frame because it set 'X-Frame-Options' to 'sameorigin'.

Оказывается, когда я нажимал на ссылки, браузер пытался открыть их во фреймах 1 и 1, добавленных на мою страницу. Решение состояло в том, чтобы добавить атрибут target к моим ссылкам и установить для него значение _top. Это приводит к тому, что ссылки полностью открываются в текущем окне/вкладке и игнорируют фрейм.

<a href="absolute link to external site" target="_top"> </a>
person duncanc4    schedule 23.04.2015