web-dev-qa-db-ja.com

指定されていないページのキャッチオールを使用して特定のページの301リダイレクトを実行するにはどうすればよいですか?

ドメインを変更しているため、古いページを新しいページにリダイレクトし、キャッチオールを作成して見逃したものをリダイレクトする必要があります。

これは、.htaccessを使用した301リダイレクトとして実行する必要があります。

例えば:

  1. http://www.olddomain.com/page1https://www.newdomain.com/page1にリダイレクトします。
  2. 同じ方法でpage2をリダイレクトします。
  3. oldomain.comの他のすべてのページを新しいドメインのホームページにリダイレクトします。
3
user3264918

基本的には、指定した順序でリダイレクトを実行する必要があります:1、2、3。

newdomain.comolddomain.comが異なるサーバーを指していると仮定すると、mod_aliasを使用できます。

Redirect 302 /page1 https://www.newdomain.com/page1
Redirect 302 /page2 https://www.newdomain.com/page2

# Redirect everything else to the home page
RedirectMatch 302 ^ https://www.newdomain.com/

ただし、ホームページへのリダイレクトがユーザーエクスペリエンスの向上につながることはめったにありません(とにかく、Googleはおそらくそれをソフト404として扱います)。単に/<other-url>newdomain.com/<other-url>にリダイレクトし、新しいサイトがそれを意味のある404として処理できるようにすることができます。これは一般にユーザーにとってより良いエクスペリエンスです。

Redirectはプレフィックス一致であることに注意してください。一致したURL(たとえば、/page1)の後のすべてが、ターゲットURLの最後に追加されます。古いURLと新しいURLが同じ場合、すべてをリダイレクトするために単一のRedirectディレクティブのみが必要です。

Redirect 302 / https://www.newdomain.com/

これらは明らかに302(一時)リダイレクトであることに注意してください。正常に動作していることが確実な場合にのみ、301(永続)リダイレクトに変更します。 301はブラウザによってハードキャッシュされるため、クライアントが誤ったリダイレクトをキャッシュすることは望ましくありません。


olddomain.comnewdomain.comが同じファイルシステムで物理的にホストされている場合、アクセスするドメインのHostヘッダーを確認する必要があるため、代わりにmod_rewriteを使用する必要があります。 。例えば:

RewriteEngine On
RewriteCond %{HTTP_Host} olddomain\.com [NC]
RewriteRule ^page1$ https://www.newdomain.com/page1 [R=302,L]

明らかに、olddomain.comnewdomain.comが異なる場所を指していると、はるかに効率的です。

1
MrWhite