人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

.htaccess 301リダイレクトの正しい書き方を教えてください。

サイトをリニューアルする際に、WordPressを入れました。
新規でwpというフォルダを作り、そこにWordPressをインストールしています。

http://ドメイン.com/へアクセスすると
http://ドメイン.com/wp/へリダイレクトをするようにしたいのですが。
.htaccessはどのように書くべきでしょうか?

また、ドメイン以下には、wp以外のコンテンツも入っており
それらは、静的なサイトとして今で通りに活用したいと考えています。
例: http://ドメイン.com/special/
例: http://ドメイン.com/test/

つまり、http://ドメイン.com/へアクセスすると、http://ドメイン.com/wp/へ飛ばされる。
http://ドメイン.com/special/へアクセスするとそのまま表示されるという仕組みです。

自分で、下記のように.htaccessを記述してみたのですが、
302リダイレクトになってしまい、Googleの検索から消えてしまいました。

RedirectMatch ^/$ http://ドメイン.com/wp/
RedirectMatch ^/index\.html http://ドメイン.com/wp/

検索結果から完全に消えてしまうのは、302リダイレクトが原因かと思われますので正確な記述が知りたいです。
どうぞ宜しくお願いいたします。

●質問者: marchang
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● oil999
●50ポイント
RewriteEngine On
RewriteCond %{http_host} ^ドメイン.com
RewriteRule ^(.*) http://ドメイン.com/wp/$1 [R=301,L]

marchangさんのコメント
回答ありがとうございます。 しかしこちらで.htaccessを書き込んだところ、 「このウェブページにはリダイレクト ループが含まれています。 」と表示されサイトが表示されなくなってしまいました。

2 ● gizmo5
●50ポイント

RedirectMatch ^/$ http://ドメイン.com/wp/
RedirectMatch ^/index\.html http://ドメイン.com/wp/

質問で書かれた、上記の書き方を、以下のように変更します。

RedirectMatch ^/$ http://ドメイン.com/wp/ [R=301,L]
RedirectMatch ^/index\.html http://ドメイン.com/wp/ [R=301,L]



以下、参考URL。
http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html
http://web-tan.forum.impressrd.jp/e/2010/01/05/6369


marchangさんのコメント
回答ありがとうございます! [R=301,L]を追加して試してみたのですが、 リダイレクトチェックツールなどでヘッダー情報を検証したところ、302のままでした。 RedirectMatchでない書き方をした方が良いのでしょうか。

3 ● うぃんど
●300ポイント ベストアンサー

一例

RedirectMatch 301 ^/$ http://ドメイン.com/wp/

もしくは

RewriteEngine On
RewriteRule ^/$ http://ドメイン.com/wp/ [R=301,L]

うぃんどさんのコメント
回答No.1とNo.2が動かない原因は下記です。 >RewriteCond %{http_host} ^ドメイン.com http://ドメイン.com/wp/$1 も ドメイン.com ですから無限ループです。 >RedirectMatch ^/$ http://ドメイン.com/wp/ [R=301,L] RedirectMatch に [R=301,L] という表現はありません。

marchangさんのコメント
ご回答ありがとうございます。 早速、.htaccessに下記を書き込んでアップしたのですが、 何故かリダイレクトが行われませんでした。 RewriteEngine On RewriteRule ^/$ http://ドメイン.com/wp/ [R=301,L] 私の方での設定ミスなどがあるのでしょうか。

うぃんどさんのコメント
別の例 >|| RedirectMatch 301 ^$ http://ドメイン.com/wp/ RedirectMatch 301 ^/index.html$ http://ドメイン.com/wp/ もしくは RewriteEngine On RewriteRule ^$ http://ドメイン.com/wp/ [R=301,L] RewriteRule ^/index.html$ http://ドメイン.com/wp/ [R=301,L] ||<

marchangさんのコメント
何度もご回答ありがとうございました。 無事にリダイレクトが成功しました〜!

質問者から

ちなみに、http://ドメイン.com/index.htmlへアクセスした際も
http://ドメイン.com/wpへ飛ぶように設定したいのですが。
その場合は、コードを足すのでしょうか。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ