crocodile notebook

feedly feedburner google+ twitter facebook creative commons BY:2.1 プロフィール


404
Creative Commons License photo credit: 404 / antigone78

みなさんはウェブマスターツールを活用してますか?
ボクはいまいちよくわかってないので活用できていません……
それでもたまに確認して、googleからなにか指摘されていないかを確認しています。
そして今日、ウェブマスターツールを開いてみたら。
クロールエラーで『見つかりません)』がなんと200個も指摘されてる!

インターネット上ではブラウザーからのサーバーに対してデータを送ってくれるよう要求します。
その際の返答を『ステータスコード』と呼びます。
このステータスコードでよく目にするのが『404 NOT FOUND』のメッセージ。
この『404』というのが『ファイルが見つかりません』という意味のステータスコードになります。

ただしこの『404』は何か悪い意味があるわけではないです。
古くなった記事を削除すれば、その記事を表示しようとしたときに『404』となります。
インターネットの上では『見つからない』というのも正しい結果なわけです。

でも今回たくさん報告されている『404』は、放置するには惜しい『404』でした。
それは、どこかからリンクしてくれてるURLが間違えてるのが原因の『404』がほとんどだから。
記事が削除されている以外にも、URLが間違えていれば記事は見つからないので『404』になります。

間違えているURLは『http://mag.torumade.nu/?cat=***/page/***/』というものばかり。
正しくは『http://mag.torumade.nu/?cat=***&paged=***』になります。
ちょっとURLを直せばご要望にお応えできるわけです。

そこで活用するのが『.htaccess』
このブログであれば『http://mag.torumade.nu/.htaccess』の場所にあるファイルです。

このファイルの中に命令を書くと、URLのリダイレクト(転送)というのが可能になります。
リダイレクトはステータスコード『301』となり、これもインターネット的には正しい動きです。
Googleも『404は問題ないけど、自分で解決できるなら301のほうがベターだよ』と言ってます。
せっかくのアクセスなんだから、記事などをちゃんと返してあげた方がユーザーに喜ばれるわけです。

RewriteRuleの書き方

RewriteEngine On
RewriteCond %{QUERY_STRING} ^([=-a-zA-z0-9]+)/page/([0-9]+)/?$
RewriteRule ^$ /?%1&paged=%2 [R=301,L]

 
『/?cat=***/page/***/』を『/?cat=***&paged=***』にリダイレクトする命令が上記。

リダイレクト機能を有効にするため、先頭に『RewriteEngine On』を書きます。
(すでに書いてあれば不要です)

URLに『?』が含まれている場合、それ以降のURLはクエリーと呼ばれて扱いが変わります。
そのため、まずは『?』以降を分解して扱えるようにします。

RewriteCond %{QUERY_STRING} ^([=-a-zA-z0-9]+)/page/([0-9]+)/?$

 
URLクエリーを扱うことを宣言するため『RewriteCond %{QUERY_STRING}』を記述します。
今回のURLであれば、取り扱うクエリーは『cat=***/page/***/』になります。

^』は文字列の最初を意味します。

[=-a-zA-z0-9]』は『イコール(=)、ハイフン(-)、半角小文字a〜z、半角大文字A〜Z、半角数字0〜9』の意味。

『[=-a-zA-z0-9]+』とすれば、上記の文字が1文字以上含まれているとなります。
半角数字だけであれば([0-9]+)とします。

([=-a-zA-z0-9]+)』と囲うことで、あとから文字列を参照・抽出することができるようになります。

/?』と最後を『?』にすることで、URLが/で終わるかどうかを無視します。

RewriteRule ^$ /?%1&paged=%2 [R=301,L]

 
実際に転送を命令しているのが、この1行になります。

RewriteRule』によって『以下のルールでURLを書き直せ』という命令になります。

^$』のなかに前述のURLクエリーが代入されます。

/?%1&paged=%2』URLクエリー内から参照・抽出します。
( )で囲われた文字を、左から順番に%1%2として呼び出します。
今回であれば([=-a-zA-z0-9]+)が%1([1-9]+)が%2になります。

[R=301,L]』ステータスコードと命令の終わりを意味します。
『R=301』はステータスコード『301』となり、URLの転送を行うことを宣言しています。
『L』は、この行を処理したら、これ以降の行については無視して処理を終了することを宣言しています。
 
 
実際に動作するところがコチラ。
誤りのURL( http://mag.torumade.nu/?cat=33/page/2 )にアクセスすると正しいURLにリダイレクトされます。
また、ステータスコードが404なのか301なのか、設定したコードが返されているかはチェッカーで確認できます。

参考:ステータスコードチェッカー β3

Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集
Ken Coar Rich Bowen
オライリージャパン
売り上げランキング: 74,290

.htaccessのRedirectRuleでURLクエリーを含めた301リダイレクトを設定する方法

UPDATE: 2013.05.20
, , , ,




併せ読みに選ばれている
記事はこちらのようです

WordPressへの不正アクセスが当ブログでも!忘れてた対策を.htaccessで施した!

WordPressへの不正アクセスが当ブログでも!忘れてた対策を.htaccessで施した!

ブログが重いなーと思ったら管理者ページへの不正ログインを試みられていた当ブログ。移設の際に対策するのを忘れていたら運悪いことに来てました。

SEOとか考える前に基本をおさらい。.htaccessとrobots.txtを見直そう!

SEOとか考える前に基本をおさらい。.htaccessとrobots.txtを見直そう!

ホームページやブログを運営していく上で、基本としてちゃんとしておきたいのが.htaccessとrobots.txtです。

ワードプレスのページ送り(ページネーション)をプラグインなしで実装する方法

ワードプレスのページ送り(ページネーション)をプラグインなしで実装する方法

ワードプレスでのページ送りをプラグインなしで実装するためのPHPとCSSです。 機能的にはシンプルですが、簡単なCSSで自由にカスタマイズできるのがポイントです。

crocodile notebookも4年目なので、ユーザビリティについて考えてみた結果

crocodile notebookも4年目なので、ユーザビリティについて考えてみた結果

google pagespeed insightやGTmatrixの指摘事項をヒントに改善してみた中から、コストもかからず比較的簡単なものをピックアップしてみました。

wordpressサイトがパンダアップデートの影響を避けられるかもしれない5つの方法

wordpressサイトがパンダアップデートの影響を避けられるかもしれない5つの方法

パンダアップデートの影響に巻き込まれたような気が多分にしてきたので、回復実例を参考に対策を施しました。 wordpress向けrobots.txtの設定実例も記載しています。

Googleウェブマスターツールは構造化データを重要視してるっぽいからWordPressで対応してみました

Googleウェブマスターツールは構造化データを重要視してるっぽいからWordPressで対応してみました

ブログってちょーっとマジメなことをやろうって思うと、なんか専門用語ばっかりでめんどくせーとか思っちゃうボクですがやってみたらできたっぽいのでそれっぽくwordpressで構造化データの対応方法まとめです。