301リダイレクトだけじゃ漏れてる被リンクがあったので、URL正規化も合わせて設定した時の備忘録(index.htmlを有りに統一する方法)

困った事になりました。
wpxサーバー+WordPressで運用していたブログを、サーバー代の問題でBloggerにお引っ越しした際の事です。

ついでにドメインも変えたので、301リダイレクトを設定しました。
※Bloggerには.htaccessをアップできないので、301リダイレクトの転送専用で安いレンタルサーバーを借りて使っています。

転送出来ているようなので安心していたのですが、Twitterでシェアされている旧ブログのリンクから遷移すると、404エラーになってしまう事を発見しました。
このリンクですが、実は「index.html」が無い。

http://www.ayums.com/index.html ←こうなっててほしかったものが
http://www.ayums.com/ ←こうなっている

私が設定したリダイレクトが「index.html」有りのものだったので、シェアされたURLのページは別のページと見なされ、404エラーが起こっていたようです。

では、「index.html」無しのURLも.htaccessに記述すればいいのではと思ったのですが…
「Page Not Found」になってしまいました。何故だ。

よく見ると、リダイレクトで書き換わったURLの末尾に「/」が入っています。
これのせいで、正しいページにリダイレクトされないようです。

色々調べてみましたが、私程度にはこうなる原因が分からない…

試行錯誤を繰り返した結果、
「URL正規化をする」でリダイレクトを繋ぐことができました。

「index.html」有りでちゃんとリダイレクトされるのであれば、「index.html」無しになっているリンクを一度「index.html」有りに変えてあげればいいじゃないという事です。
という事で、「index.html」有りに変えた設定を記録しておきます。

(こんな方法じゃなくて他に回避方法ある気がするよう…)

index.htmlを有りに統一する方法

「301リダイレクト」は前提として、.htaccessが何者だとか、ファイルのアップ方法は割愛します。

以下が、index.htmlを有りに統一する.htaccessの記述です。
○になっている部分を、自サイトのドメインに変えて使います。


RewriteEngine on
RewriteRule ^$ /index.html [R=301]
RewriteCond %{THE_REQUEST} !^.*/xxxxxxxx/
RewriteCond %{THE_REQUEST} ^.*/
RewriteRule ^(.*)/$ http://○○○.○○○/$1/index.html [R=301,L]

2行目がTOPページの処理。
3行目以降が下層ページの処理です。
3行目は、除外する場合の処理です。

301リダイレクトって、「無し」に統一する説明はSEO系の記事でゴマンとあるのに、「有り」に記述する方法が全然出回っていないんですよね。

私は以下のサイトの記事を参考にさせていただきました。
他にも、書式についていくつか説明が掲載されています。
数年前の記事ですが、ちょっと工夫しなくてはいけない時などに、参考になるかと思います。

特定のファイル(URL)を除いたindex.htmlの有り、無しの統一 | Bamboo lath 日々の記録

これでようやく、お引っ越し作業の一通りが完了です…!

Share this:

ABOUT THE AUTHOR

アラサーOLです(諸説あります)。感じたこととか勉強したこととかとりとめなく発信していきます。勉強中の身ゆえ、至らない所が多々あるかと思います。ツッコみお待ちしておりますm(_ _)m

0 コメント:

コメントを投稿