0

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のフォーラムフォルダにあるものは何でも-どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

3

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を置き換えることを意味します。

于 2011-07-23T03:35:19.393 に答える