使い方は正しいですか
RewriteRule .? http://www.newdomain.com%{REQUEST_URI} [L,R=301]
すべてのページを古いドメインから新しいドメイン (404 を含む) にリダイレクトするには?
私はhtaccessの1つにそれを持っています。それは機能しますが、それが正しいかどうかはわかりません。
使い方は正しいですか
RewriteRule .? http://www.newdomain.com%{REQUEST_URI} [L,R=301]
すべてのページを古いドメインから新しいドメイン (404 を含む) にリダイレクトするには?
私はhtaccessの1つにそれを持っています。それは機能しますが、それが正しいかどうかはわかりません。
それは機能しますが、それは私が行う方法ではありません。これ.?
は、「URL に 0 または 1 の任意のものが含まれている」という意味であり、すべてを照合する少し奇妙な方法です。
私がアプローチする方法は、一致した URL を「キャプチャ」し、それをターゲットで使用することです。
RewriteRule ^(.*)$ http://www.newdomain.com$1 [L,R=301]
ここで、.*
は「何にでも一致」を意味し、^
と$
は URL の最初と最後を表し、「すべてに一致」$1
し、 は最初の (そしてこの場合のみ) 括弧のセットで一致したものを参照します。
今見てみると、もっと複雑に見えますが、一部の URL のみを一致させたい場合やターゲットを別の方法で構築したい場合に必要なルールにより似ています。
REQUEST_URI を使用した OP のソリューションは適切であり、よく見られる ^(.*)$ および $1 を使用するよりも望ましい方法です。
理由:
olddomain.com/path
リダイレクトされます。newdomain/path
$1 のみolddomain.com/path/
がリダイレクトされnewdomain/path/
ますが、末尾のスラッシュが欠落しているパス セグメントは削除されます。私が提案する小さな改善点は 1 つだけ
です。マッチング パターンをさらに短くすることです。単一のキャレットで何にでも一致します。
RewriteRule ^ http://www.newdomain.com%{REQUEST_URI} [L,R=301]