URLをサブドメインにリダイレクトするために、あなたの質問から数ヶ月が経ちましたが、おそらくこれはまだ役立つでしょう。
isapi_rewrite v3を使用していると仮定して、次のことを試してください。
RewriteCond %{HTTP:Host} ^www\.
RewriteRule ^/forum/(.*\.asp)$ http://archive.mywebsite.co.uk/forum/$1 [NC,R=301]
最初の行は、wwwで始まるホストを探します。(末尾のドット付き)。これにより、アーカイブをそれ自体にリダイレクトする無限ループが発生しないようになります。末尾のドットは、www2のような他の人ではなく、wwwだけを行うことに気を配っています。
2行目は、を検索し、任意の文字とリテラルのドットとasp/forum/
をキャプチャして、URLを終了します。(...)
.*
\.asp
$
次に、/forum/
フォルダ内のサブドメインに移動し(/ forum /がキャプチャされなかったため、繰り返す必要があります)、キャプチャされた残りのURL全体に移動し$1
ます。
はNC
大文字と小文字を区別しないため、大文字と小文字を混在させることができます。これR=301
は一時的なものではないため、リダイレクトを意味し、永続的な301リダイレクトにします。
v3ルールでは、クエリ文字列パラメーターはルールとは完全に別個に処理されるため、ここでは何もする必要はありません。パラメータがない場合、これは機能します。パラメータがある場合は、上記の質問のように渡されます。
これはhttpとhttpsを無視します。httpにリダイレクトされるため、元のhttpsがhttpsの場合、ブラウザの警告が表示される可能性があります。それを処理する方法はありますが、私は基本的な答えを乱雑にしたくありませんでした。
ドメイン自体を書き換えルールに含めることは、ドメインを移動したい場合があるため、私には常に少し奇妙に見えます。最初の行でホストの残りの部分をキャプチャし、2番目の行でそれを使用できます。
RewriteCond %{HTTP:Host} ^www\.(.*)$
RewriteRule ^/forum/(.*\.asp)$ http://archive.%1/forum/$1 [NC,R=301]
これは上記と似ていますが、www-dotの後のホストがキャプチャされていることに加えて、行の最後に(.*)$
$が必要かどうかはわかりませんが、すべてが必要であることを明示しています。
RewriteCondキャプチャにはパーセント記号が付いているため%1
、書き換えルールでは、サブドメインの後にホストを$1
置き換えます。これは、キャプチャされた...aspurlを置き換えることを意味します。