LoginSignup
3
5

More than 5 years have passed since last update.

URL で拡張子を省略するための rewrite ルール

Posted at

下記のようなディレクトリツリーで、

  • /var/www/html/
    • ore/
      • oreore.php
    • are/
      • areare.php

下記のような 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]
3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5