web-dev-qa-db-ja.com

301ドメインを別のドメインにリダイレクトしますが、サブディレクトリは同じままにします

トップドメイン(http://x.com)(DNS/.htaccess/else?)を設定して別のドメイン(http://y.com)にリダイレクトすることはできますか?http://x.com/subdir/index.htmlをナビゲートすると、 d http://x.comのサブディレクトリ内のファイルを参照してください。

要約
方法:
x.com -> y.com(リダイレクト)
x.com/sub/index.html-> x.com/sub/index.html(リダイレクトなし)

使用例
私のビジネス名であるsanderschaeffer.nliscs.nlがあります。 1つは自分の個人名、もう1つはブランド名です。ユーザーがsanderschaeffer.nlに移動すると、ドメインはiscs.nlに転送(301)されます。ただし、1つのタイプ(つまり)sanderschaeffer.nl/clientTestSite/は、その場所にとどまります。したがって、トップレベルのみが301リダイレクトを取得しますが、サブディレクトリを含むトップドメインを入力しても、リダイレクトは行われません。

「メインサイトのサブディレクトリにあるテストサイトを使用しないのはなぜですか(iscs.nl/)?」 sanderschaeffer.nlが現在ホストされている新しいサーバーを(一時的に)テストしているからです。 :)

3

「サブドメイン」ではなく「サブドメイン」を意味すると仮定すると(例のとおり)、x.comの.htaccessファイルで次のようなものを試してください。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/sub/
RewriteRule (.*) http://y.com/$1 [R=301,L]

(301)すべてをy.comにリダイレクトします。URIは開始しない/sub/を使用します。

これはy.comの対応するURLにリダイレクトすることに注意してください。たとえば、http://x.com/foo/barhttp://y.com/foo/barにリダイレクトします。 (文字通りx.com/y.com/にリダイレクトするだけではなく?)

PDATE#1:以下のコメントに照らして、次の説明で十分かもしれません。これにより、http://x.com/(およびルートURLのみ)がy.comにリダイレクトされます。その他x.com/somethingx.comのままです。

RewriteEngine On
RewriteRule ^$ http://y.com/ [R=301,L]

ただし、これは有効なサブディレクトリを特にチェックしないことに注意してください。 URLにパスコンポーネントがあると、URLはx.comのままになります。

有効/既知のサブディレクトリを特に確認する必要がある場合は、上記の最初の例のようにRewriteCondディレクティブを使用します。

PDATE#2:別の可能性は、がサブディレクトリに似ている何かをチェックすることです。 /anything/およびそれ以外の場合はリダイレクトします。例えば:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/[a-z0-9_-]+/
RewriteRule (.*) http://y.com/$1 [R=301,L]

これにより、x.com/y.com/に、x.com/filey.com/fileにリダイレクトされますが、x.com/subdir/file.phpはリダイレクトされません。

4
MrWhite