Для перенаправления 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.