パーマリンクを変更したらリダイレクトしよう|同一ドメイン・正規表現・301

パーマリンクを、どんな風にしたらカッコイイかな〜と色々試していたら、404エラーが増えちゃいましたw

はじめ、「日付と投稿名」にしていたのですが、なんだか/スラッシュが多くて複雑な気がして、気に入らなくなり、「投稿名」に変更しました。

僕は、投稿名のはじめに日付を付けるようにしています。なので、パーマリンクに日付がたくさん入ってしまって嫌だったのです。

 

パーマリンク変更のリダイレクトの例

上記のような、パーマリンクを変更した場合の正規表現でのリダイレクトです。
.htaccessというファイルに、リダイレクトの制御を追加します。.htaccessは、WordPressがインストールされたフォルダの中にあると思います。不可視ファイルなので、不可視ファイルが見えるような設定で探します。

Apacheのmod_aliasというソースファイルを使います。

RedirectMatch という命令で、正規表現を使用したurlの制御を行うことができます。

正規表現を使うと、あるパターンに当てはまる全てのurlに、制御を適用することができます。
上の制御の場合、「urlの中から日付を抜く」という制御をしています。

RedirectMatch に続く文の意味を説明します。

 

RedirectMatchの構文

形としては、
RedirectMatch [スペース] 転送前のurl [スペース] 転送後のurl
となります。
転送前のurlは、ドメインを含まない、ドメイン後のurlです。

 

RedirectMatch転送前urlの正規表現

  • “^” という正規表現は、「行頭」を意味します。
  • “(文字列)” は、ある文字列などのグループを意味します。グループ化された文字列は、後方参照といい、転送後のurlで使うことができます。
  • “[文字列]”は、その文字列の中の1文字を意味します。[0-9]は、0〜9のいずれか1文字であれば・・・ということです。
  • “{n}”は、n回の繰り返しを意味します。なので、([0-9]{4})は、「0〜9の4桁の文字列」という意味になります。

なので、
/([0-9]{4})/([0-9]){2}/[0-9][2]/ という正規表現で、/yyyy/mm/dd/ という形の0〜9で構成される文字列全てを当てはめることができます。

  • “(.*)”は、ワイルドカード的なものです。”.”任意の文字の、”*”繰り返しを意味しています。
  • “$”は、行末です。

 

RedirectMatch転送後urlの正規表現

  • “$4” は、後方参照の4番目という意味です。1〜3番目のグループは使われません。

 

よって、

例えば、https://withearthlife.jp/2016/12/19/20161219_potato/というアクセスがあった場合、

https://withearthlife.jp/20161219_potato/にリダイレクトされるようになります!

 

日本語URLのリダイレクト|カテゴリーやタグなどに多い

僕は、サイトを引っ越ししたついでに、ごちゃごちゃになっていたカテゴリーやタグを整理しました。(初心者なもんでスンマヘンw)

Google Search Console で確認すると、日本語urlのカテゴリーやタグページの、404エラーが積もりに積もってしまっているのがわかります・・・

リダイレクトしてあげたいけど、日本語urlはリダイレクトできるのでしょうか?

 

日本語URLのリダイレクトはできる!

url一つひとつを.htacceessファイルに記述し、リダイレクトします。規則性が見当たらなかったので、正規表現は使えませんでした。

Redirect 301 でも、Redirect parmanent でも良いと思います(同じ意味です)。
301リダイレクトは、ドメイン変更やサイト構成を変更し、もう元に戻ることがない場合に使用します。検索エンジンの評価も引き継がれます。

例えば、このような感じです。

 

Redirect 301の構文

Redirect 301 [スペース] 転送前のurl [スペース] 転送後のurl

転送前urlの日本語部分は、エンコードしたものではなく、日本語そのものを入れます。

次のような日本語urlにアクセスすると、しっかりリダイレクトされるようになりました!

https://withearthlife.jp/tag/%E3%83%92%E3%83%A1%E3%82%AA%E3%83%89%E3%83%AA%E3%82%B3%E3%82%BD%E3%82%A6/

.htaccessに日本語を使う場合、ファイル形式を(UTF-8)で保存しなければなりませんので、注意が必要です。

エックスサーバーのサーバーパネルでも、.htaccessファイルを編集できますが、(EUC-JP)で保存されるため、おそらく日本語がうまく読み込めません。

ftpソフトなどを使用して、.htaccessファイルを編集&アップロードしましょう!

 

日本語URLエンコード前の日本語が知りたい!

Google Search Console のエラーのあるページで、urlをクリックすします。すると、日本語部分がエンコードされたurlでアクセスされ、元の日本語が何であったかがわかります。

 

エンコード後のurlでアクセス。

 

エンコード前のurlが表示される!

 

そもそもカテゴリーやタグページがなぜ日本語になる?

WordPressは、記事投稿画面で、カテゴリーやタグを簡単に追加できますよね。

 

日本語のカテゴリーやタグを追加した場合、同時に「スラッグ」という、ページのurlになる部分を半角英数字で指定してあげないと、カテゴリーやタグページのurlも日本語となります。

 

 

 

パーマリンクを変更したらリダイレクトしよう|同一ドメイン・正規表現・301記事のまとめ

せっかく検索でクリックしてもらえたのに、ページがありませんでした・・・は寂しいですよね。
お客様の利便性やご機嫌を損なわないように、きめ細かく対応していかなければなりませんね。

勉強して、いろいろなことがわかってくると楽しいし、ブログ書くのも楽しくなりますね。
今後も、勉強していきたいです!

今回も、最後まで読んでくださり本当にありがとうございました。

“パーマリンクを変更したらリダイレクトしよう|同一ドメイン・正規表現・301” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です