WordPressでパーマリンク変更をした時のリダイレクト設定
WordPressのパーマリンク設定を変更したら、リダイレクトの設定をサーバー側(もしくはプラグイン)でする必要があります。
今回は、nginxでリダイレクト設定をする時の
目的:旧URLから新URLに301リダイレクトする
nginxのrewriteを使って301リダイレクト(恒久的なリダイレクト)をしてみます。
「数字ベース」から「カスタム構造」に変更した時などには、忘れずにリダイレクトしておきたいです。
記事ページに関しては、
(旧) http://web-tsukuru.com/archives/123 (新) http://web-tsukuru.com/123
また、タグを設定していたので、
(旧) http://web-tsukuru.com/archives/tag/tag-name (新) http://web-tsukuru.com/tag-name
とリダイレクトするように設定します。
解決策:default.confにrewriteルールを追記
nginxの設定ファイルがある/etc/nginx/conf.dにあるdefault.conf(*1)に設定を追記します。
serverブロック内にlocationディレクティブを追記し、その中にrewriteルールを設定することでリダイレクトできます。
*変更する設定ファイルはサーバーによって変更してください。
vi /etc/nginx/conf.d/default.conf
Proxy Cacheを使っているので、ポート80のほうのserverブロックに以下のように追記します。
location ~ /archives/ {
rewrite ^/archives/(.*)$ /$1 permanent;
}
locationで/archives/以下をリダイレクトするように設定。リライトルールは以下のように記述します。
rewrite リダイレクトするディレクトリ リダイレクト先 リダイレクトの種類;
今回、リダイレクトするディレクトリはarchives/%post_id%とarchives/tag/%tag%なので、^/archives/(.*)$とする。
()$で囲った部分は、$1のように変数として使用できます。リダイレクト先は今回ドメイン直下にしたので、/$1というように変数を使って指定します。
具体的には、/archives/123にアクセスがきた場合は$1変数には「123」がはいり、/123にリダイレクトされます。
追記したらnginxを再起動すればリダイレクトの設定は完了です。
service nginx restart
[amazonjs asin=“4844362526” locale=“JP” title=“WordPress 高速化&スマート運用必携ガイド”]