【WEBで】パラメータ付きのURLをリダイレクトするときに詰まった【Wordpress】
前提条件
・WordpressがインストールされているHP
※そうでなくてもパラメータのついたリダイレクトは
この記事で完了できます。
・WPインストールしているディレクトリより下位もしくは同階層にリダイレクトしたい
------------------------------------------------------------------------------
Wordpressがいるサーバー内でパラメータ付きのリダイレクトする手順がわからなくて詰んだんです。1日くらい無題にした。
もったいない。
今回もまた簡易的ですが実装方法と注意事項を記載しておきます。
------------------------------------------------------------------------------
やりたいこと
例えばこんなURLがあったとして、
「https://www.sample.com/note/?id=156」
「https://www.sample.com/news/156/」
にリダイレクトしたいみたいな。
※リダイレクトしたURLにはパラメータを引き継がないこととします。
実装方法
・.htaccess使います。
RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=156$
RewriteRule ^ https://www.sample.com/news/156/ [R=301,L]
上記を.htaccessに書くだけ。
「RewriteEngine On」はリダイレクト処理するための宣言になります。
「RewriteCond %{QUERY_STRING}」の部分は条件分岐のために必要な宣言です。
例えばパラメータがid以外で「test」とか「gt」とかだった場合は
「id」と書いている部分を書き換えてそれを=でつなぐ形になります。
あとは
「RewriteRule ^ https://www.sample.com/news/156/ [R=301,L]」
の部分で飛んで欲しいURLを記載すればOK
リダイレクトしたいURLが複数ある場合は
RewriteCondとRewriteRuleをリダイレクトしたい分だけ繰り返すのみです。
注意事項(俺が詰まったとこ)
Wordpressが公開領域直下にインストールされていると、自動的に.htaccessが生成されますが、その中には
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
こんなのが書いてあったりします。
これの下に書いてると全く動きませんでした。
理由まではわかっていません。疲れたんです。すみません。
なので、RewriteCond や RewriteRule を使ったリダイレクト処理は
上記の記述より上に書くことをおすすめします。
ここまでスクロールして
よくわからなかった方はこちら↓
ほなまた。
おすすめWordpressテーマ
「使い勝手がよくていいテーマないかなー」
なんて方におすすめ↓
■ SWELL