mod_rewriteで再帰的に上位パス名をphpと解釈する

日付 2022.11.10
タイトル mod_rewriteで再帰的に上位パス名をphpと解釈する
本文
# 1.
# 再帰的に上位へ解釈を試みる
# aaa -> aaa.php
# aaa/bbb/ccc -> aaa/bbb.php
>>>
RewriteEngine On

# if exists file content, use it
RewriteCond %{REQUEST_FILENAME} -f [or]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]

# try aaa -> aaa.php (only use 1st time)
RewriteRule ^(.*(?<!\.php))$ ,.php [L,QSA]
# up to recurse aaa/bbb/ccc -> aaa/bbb.php -> aaa.php
RewriteRule ^(.+)/.*$ ,.php [L,QSA]
<<<


# 2.
# index.phpの存在も交えて再帰的に上位へ解釈を試みる
# aaa -> aaa.php
# aaa/bbb/ccc -> aaa/bbb/ (次展開でindex.phpと解釈されることを期待)
>>>
# if exists file content, use it
RewriteCond %{REQUEST_FILENAME} -f [or]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]

# up to recurse aaa/bbb/ -> aaa/bbb.php
RewriteRule ^(.+)/(|index\.(html|php))$ $1.php [L,QSA]
# try aaa -> aaa.php (only use 1st time)
RewriteRule ^(.+(?<!\.php))$ $1.php [L,QSA]
# up to recurse aaa/bbb/ccc(.php) -> aaa/bbb/ (for test index.php)
RewriteRule ^(.+)/.+$ $1/ [L,QSA]
<<<

# 22.11.21 index.phpを解釈するパターンの追記とコメント追記