1,468 views
この記事は最終更新から 1413日 が経過しています。
1. やりたいこと
WORDPRESSで当たり前のように使っているパーマリンク。
英語で書くと permalink
すなわち、恒久的なリンク
すなわち、ずっと変わらないリンク名ということだ。
例えば、以下のような URLでアクセスする最新情報閲覧ページがあったとする。
http://www.example.com/result.php?year=2018 ←(1)
この記述ルールに従えば、翌2019年には以下のようになるはずだ。
http://www.example.com/result.php?year=2019 ←(2)
同じ「最新情報が閲覧できるサイト」ではあるが、時間の変化とともにアクセス時の URLが変わってしまう。
そこで 2018とか 2019とかを隠ぺいし、いつでも同じ URLでアクセスできるようにしたい。
でも、既存のプログラムには一切手を加えたくない。
つまり…
プログラムを一切いじらずに、いつでも
http://www.example.com/newinfo ←(3)
で最新情報閲覧ページにアクセスできるようにしたい。
2. やってみる
(1) Apacheの mod_rewite を使って実現する。
1) 基本
.htaccess に以下のように書いておく。
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^newinfo$ result.php?year=2019 [L] </IfModule>
すると (3) でアクセスして来た人にばれずに (2) を開ける。
すなわち…
閲覧者のWEBブラウザのアドレスバーには (3) が表示されているままなので、不自然なことなくばれずに (2) へ飛ばせるのだ。
2) 応用その1
もし、
http://www.example.com/newinfo?type=1
のように引数を渡す必要がある時は、L(Last つまり「ルールの定義はここまでで終わり」)の前に QSAを付ける。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^newinfo$ result.php?year=2019 [QSA,L]
</IfModule>
すると、以下のように展開されて所望の動作となる。
result.php?type=1&year=2019
これをしないと引数が消えてしまう。
3. 所感
ちょっと雑だが備忘録なので一先ずこれでよし。
mod_rewrite は使いこなせたら便利そうなので、そのうちにちゃんと勉強しよう。
参考情報
ありがとうございます。 m(_ _)m
https://www.dokuwiki.org/ja:rewrite
https://oxynotes.com/?p=7392
https://qiita.com/tkykmw/items/c1e2df5e96d9dad3a07a
https://ferret-plus.com/2186
http://wiki.bit-hive.com/tomizoo/pg/mod_rewrite%20-%20QSA%E3%83%95%E3%83%A9%E3%82%B0
https://html-coding.co.jp/knowhow/tips/wp_modrewrite/