web-dev-qa-db-ja.com

ルートインデックスページを取得して、SEOに影響を与えずにサブディレクトリにリダイレクトするにはどうすればよいですか?

個人のWordPressブログを復活/再編成しています。

次のようなURLを使用しています。

http://mydomain.com/blog

ウェブサーバー301はwww.mydomain.commydomain.comにリダイレクトします。

blogサブディレクトリを使用したいのは、他の部分をサイトに追加する予定があるためです。ブログはサイトの一部のみです。

ただし、現時点ではブログだけが存在するため、当面はルートインデックスページをブログにリダイレクトする必要があります。

ルートindex.htmlページでこれを使用してリダイレクトを実行しています...

<meta http-equiv="REFRESH" content="0;url=./blog">

...しかし、これはGoogleとBingによるサイトのインデックス登録を停止したようです。

SEOに影響を与えずにこれを行うにはどうすればよいですか?また、どのURLをsitemap.xmlに入れるべきですか?

2
paradroid

ルートの.htaccessファイルでURLを内部的に書き換えることができます。

RewriteEngine On

#if request is mydomain.com/something OR
RewriteCond %{HTTP_Host} ^mydomain\.com$ [OR]

# or www.mydomain.com/something
RewriteCond %{HTTP_Host} ^www\.mydomain\.com$

# but not mydomain.com/blog
RewriteCond %{REQUEST_URI} !^/blog/

#change it to mydomain.com/blog/something
RewriteRule (.*) /blog/$1 [R=301]

または、サイトの他の部分を開発するまで一時的なソリューションを適用する場合は、次のコードを使用してルートにindex.phpを配置できます。

<?php
Header( "HTTP/1.1 301 Moved Permanently" ); 
Header( "Location: http://www.mydomain.com/blog" ); 
?>

このアプローチの利点は、URLの混乱が存在する可能性があることです。そして、それは.htaccessアプローチよりも簡単です。また、これにより、このページがこの新しい場所に永久に(または302で一時的に)移動したことがGoogleに通知されます。 ([R=301].htaccessは同じことをしますが。)

Matt Cuttsによる301および302リダイレクトについての議論

5
DavChana