Справка по перезаписи ISAPI с перенаправлением на поддомен - PullRequest
0 голосов
/ 10 марта 2011

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

Форум находится в ASP и в настоящее время имеет этот URL

http://www.mywebsite.co.uk/forum/forum_posts.asp?TID=34419 http://www.mywebsite.co.uk/forum/forum_topics.asp?FID=47

Я хочу, чтобы каждый запрос на форуме был перенаправлен на 301:

http://archive.mywebsite.co.uk/forum/forum_posts.asp?TID=34419 http://archive.mywebsite.co.uk/forum/forum_topics.asp?FID=47

В основном все, что находится в папке форума с расширением .asp с или без строки запроса - любая помощь очень ценится.

Спасибо

1 Ответ

3 голосов
/ 23 июля 2011

Для перенаправления URL-адреса на поддомен прошло несколько месяцев с момента вашего вопроса, но, возможно, это все равно поможет.

Если вы используете isapi_rewrite v3, попробуйте следующее:

RewriteCond %{HTTP:Host} ^www\.
RewriteRule ^/forum/(.*\.asp)$ http://archive.mywebsite.co.uk/forum/$1 [NC,R=301]

Первая строка ищет хост, начинающийся с www.(с завершающей точкой).Это гарантирует, что вы не получите бесконечный цикл, перенаправляющий архив на себя.Задняя точка придирчива только к www, а не к другим, как www2.

Вторая строка ищет /forum/, затем захватывает (...) любые символы .* и буквальную точку и asp \.asp, заканчивая URL $

Затем он переходит на ваш поддомен в папке /forum/ (так как / forum / не был захвачен, нам нужно это повторить), и весь остальной URL, который$1.

NC означает, что регистр не учитывается, поэтому все это можно смешивать как в верхнем, так и в нижнем регистре.R=301 означает перенаправление и делает его постоянным перенаправлением 301, поскольку это не является временным.

В правилах v3 параметры строки запроса обрабатываются совершенно отдельно от правил, поэтому вам не нужно делатьчто-нибудь здесь.Если нет параметров, то это работает.Если есть параметры, они передаются как в вашем вопросе выше.

Это игнорирует http против https.Он будет перенаправлен на http, поэтому, если оригинал был https, вероятно, будет предупреждение браузера.Есть способы справиться с этим, но я не хотел загромождать основной ответ.

Наличие самого домена в правиле перезаписи всегда немного странно для меня, так как вы можете захотеть переместить его,Вы можете захватить оставшуюся часть хоста в первой строке и использовать ее во второй.

RewriteCond %{HTTP:Host} ^www\.(.*)$
RewriteRule ^/forum/(.*\.asp)$ http://archive.%1/forum/$1 [NC,R=301]

Это похоже на выше, с добавлением, что хост после захвата точки www, дляконец строки (.*)$ Я не уверен, что здесь требуется $, но это говорит о том, что мы хотим все.

Захваты RewriteCond нумеруются со знаком процента, поэтому %1 вПравило перезаписи заменяет хост после субдомена, а $1 по-прежнему означает замену захваченного ... asp url.

...