存在するファイルはスルーしたい
mod_rewriteのお話。
ファイルが存在する場合はそのファイルを表示し、存在しない場合はindex.phpを表示するようにしたい。
よくある例が以下のようになっているが、実際にはうまく動かない。
RewriteEngine on RewriteBase / #ファイルが存在しない且つ、ディレクトリが存在しない場合は、index.phpを表示 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^$ /index.php [L,QSA] RewriteRule ^(.*)$ /index.php?jb=$1 [L,QSA]
修正(2009/06/07)
挙動について解決しました。
[Apache][mod_rewrite]続:存在するファイルはスルーしたい
以下のように書くと期待通りに動作する。
RewriteEngine on RewriteBase / #ファイルが存在するか、ディレクトリが存在する場合は、そのファイルを表示する RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.* - [L] #ファイルが存在しない且つ、ディレクトリが存在しない場合は、index.phpを表示 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^$ /index.php [L,QSA] RewriteRule ^(.*)$ /index.php?jb=$1 [L,QSA]
これで目的は達成されるのだが、最初の例でなぜうまくいかないかが納得いかない。
この挙動について説明できる方がおられれば、ご教授いただけると幸いです。
The Definitive Guide to Apache mod_rewrite (Definitive Guides (Hardcover))
- 作者: Rich Bowen
- 出版社/メーカー: Apress
- 発売日: 2006/02/22
- メディア: ハードカバー
- クリック: 32回
- この商品を含むブログ (3件) を見る
Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集
- 作者: Ken Coar,Rich Bowen,笹井崇司
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/09/26
- メディア: 大型本
- 購入: 6人 クリック: 144回
- この商品を含むブログ (32件) を見る