1

私は長年(10歳以上)存在するドメインにサイトを持っていて、現在、あるCMSから別のCMSにサイトを変更しています。これはコンテンツを移動するための長いプロセスであり、一部は移動せず、数年先まで共存する必要があります。

古いサイトをルート(www.example.com)からサブフォルダー(www.example.com/_old)に移動しました。古いサイトには、wwwを強制するための次の.htaccessがありました。2007年の初めから私のドメインで。(www.example.com/_old/)フォルダの.htaccessでこれを削除しました。

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

ここで、ニュースサイトを別のサブディレクトリ(www.example.com/dp/)に記述して、.htaccessと書き換えだけでルートを空に保つようにしましたが、本当に必要なのは次のとおりです。

  1. www(example.com)なしでドメインのルートにある新しいサイトにアクセスしたい
  2. 古いサイトを「世界」からのすべての古いリンク、主にGoogle(www.example.com/_old/[whatever] from www.example.com/ [whatever])のメインランディングページとして引き続き機能させたい。
  3. ページを新しいサイト(www.example.com/_old/oldpage.htmlからexample.com/newpage.html)に移動するときに、コンテンツの重複を避けるために、そのURLを特に新しいサイトにリダイレクトできることを確認したいと思います。 。

私はここにいます:

RewriteCond %{HTTP_HOST} www.example.com
RewriteRule ^(.*)$ /_old/$1 [L,R=301]

RewriteCond %{HTTP_HOST} example.com
RewriteCond %{REQUEST_URI} /dp/
RewriteRule ^(.*)$ http://example.com/$1 [L,R=307]

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

これはまだサブフォルダ/dp/の新しいサイトにあります

4

1 に答える 1

0
#if file or directory doesn't exist, check the _old directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/_old
RewriteRule .* /_old/$0 [L]
#note that I omitted the redirect flag. That way the old url just work like they used to. If you really want you can just add them, but please, just give it a try. This might even fix problem nr. 3

# remove www. from everything except _old urls
RewriteCond %{HTTP_HOST} www\.example\.com
RewriteCond %{REQUEST_URI} !/_old
RewriteRule ^(.*)$ http://example.com/$1 [L,R=307]

もう少し明確にするために。内部で/_old/seafood.htmlに書き換えられた場合、ユーザーはwww.example.com/seafood.htmlのような古いリンクをリクエストします。将来、このための新しいページを作成したい場合は、ルートにseafood.htmlを作成するだけです。このファイルは、/_oldフォルダーにある同じファイル名よりも自動的に優先されます。

于 2013-03-08T19:15:05.580 に答える