1

既存のサイトがあります。これを ourdomain.com と呼びましょう。閉鎖中のサイトからコンテンツを移動しました。legacydomain.com としましょう。サーバーのレガシー ドメインを /public_html/ フォルダーに指定しました。

私が必要としているのは、legacydomain.com または legacydomain/anything-here を ourdomain.com/legacydomain/ にリダイレクトする .htaccess です。URL には他に何も追加されていません。

ただし、特定の宛先にリダイレクトするには、いくつかの特定の URL も必要ですが、それらは実際にはパターンに従っていません。例えば:

legacydomain.com/something.html から ourdomain.com/legacydomain/something.html へ

legacydomain.com/another.html から ourdomain.com/legacydomain/folder/another.html へ

これは私が試したことです:

RewriteCond %{HTTP_HOST} ^www\.legacydomain\.com$ [NC]
RewriteRule (.*) http://www.ourdomain.com/legacydomain/$1 [R=301,L]

Redirect 301 /something.html http://www.ourdomain.com/legacydomain/another.html

ほとんどの場合は機能しますが、legacydomain.com/anything-here にアクセスすると、書き換えようとせず、ドメインが同じままで 404 が返されるだけです。 legacydomain.com/anything-here/more-stuff のようなものは、ourdomain.com/legacydomain/anything-here/more-stuff に書き換えられますが、これは望ましくありません。

.htaccess の他の唯一のものは、非 www を www に書き換えることと、標準の WordPress のものです。ガイダンスをいただければ幸いです。上記のすべての例では、先頭に http:// と www を付ける必要がありますが、それだけでは多くの「リンク」を投稿できません。

4

2 に答える 2

1

特定の書き換えごとに、次のように 2 行が必要になります。既存の構成によっては、これが機能しない場合、something.html の前の RewriteRule の先頭にスラッシュを追加する必要がある場合があります。

RewriteCond %{HTTP_HOST} legacydomain.com
RewriteRule something.html http://ourdomain.com/legacydomain/something.html [R=301,L]

次に、他のすべてにキャッチオールを使用します。

RewriteCond %{HTTP_HOST} legacydomain.com
RewriteRule (.*) http://ourdomain.com/legacydomain/ [R=301,L]
于 2012-12-06T21:58:47.930 に答える
0

個人的には、mod_rewrite を使用しない最も単純なソリューションを使用します。まず、特定のページを必要な場所にリダイレクトします。

Redirect 301 /something.html http://ourdomain.com/legacydomain/something.html
Redirect 301 /another.html http://ourdomain.com/legacydomain/another.html

次に、他のすべてをベース URL にリダイレクトします。

RedirectMatch 301 (.*) http://ourdomain.com/legacydomain/

RewriteEngine onこれらは、ステートメントの前に .htaccess ファイルに配置する必要があります。

于 2012-12-06T21:37:04.713 に答える