
パーマリンクを、どんな風にしたらカッコイイかな〜と色々試していたら、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記事のまとめ
せっかく検索でクリックしてもらえたのに、ページがありませんでした・・・は寂しいですよね。
お客様の利便性やご機嫌を損なわないように、きめ細かく対応していかなければなりませんね。
勉強して、いろいろなことがわかってくると楽しいし、ブログ書くのも楽しくなりますね。
今後も、勉強していきたいです!
今回も、最後まで読んでくださり本当にありがとうございました。
日本語タグでリダイレクトエラーで悩んでいました。
大変参考になりました。
ありがとうございます。