下記のようなディレクトリツリーで、
- /var/www/html/
- ore/
- oreore.php
- are/
- areare.php
- ore/
下記のような URL で PHP スクリプトを呼び出す方法。
http://example.com/ore/oreore
http://example.com/are/areare
下記の方法で大丈夫かと思ってたけど・・
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
下記のような URL で rewrite がループして 500 となりました。
http://example.com/ore/oreore/xxx
rewrite のログを追ってみたところ %{REQUEST_FILENAME}
が /ore/oreore
となっていました。
/ore/oreore/xxx
というパスへのリクエストは・・・
- REQUEST_FILENAME:
/ore/oreore
- PATH_INFO:
/xxx
と、解釈されるからのようです。
ので、下記のようにすれば大丈夫でした。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}%{PATH_INFO}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]