0

これが私の問題の説明です

このパスからサイトを移動しました

http://www.site.com/any-thing-here-workfine

このようにサブドメインに

http://portal.site.com/any-thing-here-workfine

しかし、今まで、Googleには以前のリンクがあり、このリンクはすべてダウンしています

そのため、このページが notfound を返した場合に、このダウン リンクを www からサブ ドメインに移動する作業を現在行っています。

平均

グーグルの私のリンクはまだ

http://www.site.com/any-thing-here-workfine このページが見つかりません

だから私はそれを301から同じURLにリダイレクトしたいが、thiaのように

http://portal.site.com/any-thing-here-workfine

これどうやってするの ?

4

1 に答える 1

4

これは mod_rewrite の場合は非常に簡単です

RewriteEngine On
RewriteCond %{HTTP_HOST} =www.site.com [NC]
RewriteRule ^/?(.*) http://portal.site.com/$1 [R=301]

それはすべてをリダイレクトします。しかし、www.site.com に新しいコンテンツを投稿して、それをリダイレクトしたくない場合はどうすればよいでしょうか?

www.site.com に静的コンテンツがあるだけなら、簡単です。存在しないファイル/フォルダーの「404」テストを追加するだけです。

RewriteEngine On
RewriteCond %{HTTP_HOST} =www.site.com [NC]
# 404 test -- file/folder exists?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*) http://portal.site.com/$1 [R=301]

ただし、ファイルシステム上のファイルに直接対応しない新しい「仮想」URL が www.site.com にある場合は、これらをリダイレクトルールから除外する方法を理解する必要があります (そうしないと、 404 テストでの誤検知)。たとえば、リダイレクトしないwww.site.com の仮想コンテンツがすべて /newsite/... で始まるとすると、次のようになります。

RewriteEngine On
RewriteCond %{HTTP_HOST} =www.site.com [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/?newsite/
RewriteRule ^/?(.*) http://portal.site.com/$1 [R=301]
于 2012-10-18T22:53:18.483 に答える