現在地: トップページ » Web制作お役立ち » パーマリンクを変更したらリダイレクトしよう|同一ドメイン・正規表現・301

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

パーマリンクを、どんな風にしたらカッコイイかな〜と色々試していたら、404エラーが増えちゃいましたw
はじめ、「日付と投稿名」にしていたのですが、なんだか/スラッシュが多くて複雑な気がして、気に入らなくなり、「投稿名」に変更しました。
僕は、投稿名のはじめに日付を付けるようにしています。なので、パーマリンクに日付がたくさん入ってしまって嫌だったのです。


 

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

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

<IfModule mod_alias.c>
RedirectMatch ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ /$4
</IfModule>

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://withearth.life/2016/12/19/20161219_potato/というアクセスがあった場合、
https://withearth.life/20161219_potato/にリダイレクトされるようになります!
 

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

僕は、サイトを引っ越ししたついでに、ごちゃごちゃになっていたカテゴリーやタグを整理しました。(初心者なもんでスンマヘンw)
Google Search Console で確認すると、日本語urlのカテゴリーやタグページの、404エラーが積もりに積もってしまっているのがわかります・・・
リダイレクトしてあげたいけど、日本語urlはリダイレクトできるのでしょうか?

 

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

url一つひとつを.htacceessファイルに記述し、リダイレクトします。規則性が見当たらなかったので、正規表現は使えませんでした。
Redirect 301 でも、Redirect parmanent でも良いと思います(同じ意味です)。
301リダイレクトは、ドメイン変更やサイト構成を変更し、もう元に戻ることがない場合に使用します。検索エンジンの評価も引き継がれます。
例えば、このような感じです。

<IfModule mod_alias.c>
Redirect 301 /tag/スズラン/ https://withearth.life/tag/flower/
</IfModule>

 

Redirect 301の構文

Redirect 301 [スペース] 転送前のurl [スペース] 転送後のurl
転送前urlの日本語部分は、エンコードしたものではなく、日本語そのものを入れます。
次のような日本語urlにアクセスすると、しっかりリダイレクトされるようになりました!
https://withearth.life/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記事のまとめ

せっかく検索でクリックしてもらえたのに、ページがありませんでした・・・は寂しいですよね。
お客様の利便性やご機嫌を損なわないように、きめ細かく対応していかなければなりませんね。
勉強して、いろいろなことがわかってくると楽しいし、ブログ書くのも楽しくなりますね。
今後も、勉強していきたいです!
今回も、最後まで読んでくださり本当にありがとうございました。


飛騨高山で畑を耕しながら、フリーランスのWebデザイナーとして活動しています。自然や文化に触れながら、人を癒し和ませるデザインを追求しています!文章作成、イラスト作成、写真撮影やパソコン作業全般が得意で大好きです。工業高校→工業大学で機械や電気の勉強をしていましたが、これからは自然の時代!と思い、自然の中で楽しく元気に暮らし続けることを目標に頑張っています。スピリチュアル大好き。最先端は苦手。時事問題も苦手。新聞は好きです。12年間乗ったクラウンからCAST SPORTへ乗り換え。Mac,iPad,GRATINA 4G(au/京セラ),NIKON COOLPIX P6000,D7200使い。ヘンプアクセサリー作りが趣味。

1件のコメント

  1. 日本語タグでリダイレクトエラーで悩んでいました。
    大変参考になりました。
    ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。