2021年9月27日月曜日

Apache mod_rewriteの設定

基本は、

RewriteRule PTN REPLACE [OPTION]

を書く。


PTNは正規表現で、わたってくるのは /foo/bar.htmlなど、/から始まるパス(.htaccessではなくhttpd.confに書く場合)。


PTNが一致した場合のみ、パスがREPLACEに変わる。REPLACEを絶対URLにして、OPTIONにRまたはPでRedirectあるいはProxyが出来る。

リダイレクトは、[R,L]。Lを明示する必要がある。

プロキシは、[P]。PはLを暗黙的に含んでいる。


RewriteRuleではパスしか検査できない。なので、それ以外も調べたい場合などは

RewriteCond 検査対象文字列 条件

を直前に列挙する。複数列挙すればAND条件。ORにしたい場合には特殊な書き方がある。

検査対象文字列は、いろいろな暗黙変数的なもの。検索すればすぐに出てくるだろう。

条件は正規表現またはフラグ。これも検索すればわかる。


正規表現は普通のPerl互換。

なので、「すべてをマッチ」したいためだけに ^(.*)$なんて書く必要はない。なぜか流行っている?けども。




Apacheの自動再起動

 AWS EC2 AmazonLiunuxのインスタンスにて。

Apacheは最初から入っているが自動起動は有効化されていない。

rootユーザーにて以下実行で自動起動が有効になる。

# chkconfig httpd on


設定の状態確認は

# chkconfig --list httpd


こんな表示がされるが、

httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

0(停止)から6までのいろいろな起動モード毎に自動起動するか否か。いい感じにしてくれてるはずなので、真ん中あたりがいくつかonならOKのはず。