Как перенаправить дружественный URL на динамический URL? - PullRequest
1 голос
/ 04 декабря 2010

Каков наилучший способ динамически перенаправить дружественный URL-адрес в Linux на динамический в Windows?

ех.
domainone.com/dir/one/two перенаправляет на domaintwo.com/index.aspx?a=one&b=two

и

domainone.com / реж / три / четыре перенаправляет на domaintwo.com/index.aspx?a=three&b=four

Ответы [ 3 ]

2 голосов
/ 04 декабря 2010

Заголовок HTTP с именем Местоположение - это способ перенаправления пользователя через хосты / домены.

В зависимости от конфигурации вашего сервера и механизма, используемого для генерации заголовков HTTP, конкретная реализация будет отличаться. Пример в PHP (поскольку ваш вопрос, кажется, помечен) должен включать следующий код:

header('Location: http://domaintwo.com/index.aspx?a=one&b=two');

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

Тот же эффект возможен и в файлах конфигурации домена (точный путь зависит от программного обеспечения сервера и операционной системы) или, что более условно, в файлах .htaccess. Если вы предоставите больше информации о вашей хостинговой среде, кто-то сможет помочь вам разработать необходимое правило перезаписи. Я предпочитаю включать этот уровень умного переписывания в сценарий PHP, так как я думаю, что файлы .htaccess, как правило, сложнее управлять и «читать».

2 голосов
/ 04 декабря 2010

Из Apache:

Либо в файле конфигурации сервера, либо, что более вероятно, в файле .htaccess.

Вы можете использовать mod_rewrite , но для перенаправления было бы более целесообразно использовать mod_alias и оператор RedirectMatch.

RedirectMatch 301 ^/a/([^/]+)/([^/]+)$ http://domaintwo.com/index.aspx?a=$1&b=$2

Переписать вариант:

RewriteEngine On
RewriteBase /
RewriteRule ^/a/([^/]+)/([^/]+)$ http://domaintwo.com/index.aspx?a=$1&b=$2 [R=301,L]

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

0 голосов
/ 04 декабря 2010

Довольно стандартный способ добиться этого в Linux - это использовать Apache с mod_rewrite (как установить и настроить Apache и mod_rewrite, если он еще не настроен, будет зависеть от вашего дистрибутива Linux)

Затем, в вашей конфигурации Apache, вы можете добавить строку вроде:

RewriteEngine On
RewriteRule ^/a/([^/]+)/([^/]+) http://www.domaintwo.com/index.aspx?a=$1&b=$2
...