mod_rewriteネタその2
mojaviで使うmod_rewriteだけど、少しだけ進展させてみた。
こんな内容。
—
RewriteEngine On
# 実在ファイルへのアクセスはそのまま流す
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* – [L]
#モジュールだけ指定されていた場合はactionはindexを指定
RewriteRule ^([^/]+)/?$ – [C]
RewriteRule !^rulebase/? – [C]
RewriteRule ^([^/]+)/?$ /index.php?module=$1&action=index [L]
#モジュールとアクションだけが指定されていたら(スラッシュの
#有無にかかわらず)
RewriteRule ^([^/]+)/([^/]+)/?$ – [C]
RewriteRule !^rulebase/? – [C]
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?module=$1&action=$2 [L]
#後ろにスラッシュがあって、さらにパラメータが指定されたら
#とりあえずモジュールとアクションだけ書き換え
RewriteRule !^rulebase/? – [C]
RewriteRule ^([^/]+)/([^/]+)/(.*) /rulebase/$3?module=$1&action=$2
#次にパラメータを書き換えて、パラメータの数だけ繰り返す
RewriteRule ^rulebase/([^/]+)/([^/]+)(.*)$ /rulebase$3?$1=$2 [QSA,N]
RewriteRule ^rulebase/?$ /index.php [QSA,L]
—
いちおう動いている模様。
これで進めることにする。