PHPでMVCフレームワークを構築しています。私は次のようにセグメント化された URL を使用しています。
http://mydomain.com/controller/method/param1/param2
Apache .htaccess で次の書き換えルールを使用しています。
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z\-_]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controller=$1&method=$2¶m1=$3¶m2=$4 [NC,L]
URL は正常に機能し、正しいコントローラーとメソッドが呼び出されています。ただし、apache2 error.log に多くのエラーが記録されています。2 つ以上のセグメントを含む URL にアクセスすると、「ファイルが見つかりません」というエラーが表示されます。ブラウザで発生する 404 はありません。
明確にするために、次の URL では Apache ログにエラーは発生しません。
http://dev.bonesphp.com/about
ただし、次の URL ではエラーが発生します。
http://dev.bonesphp.com/about/test/pre >ファイルが存在しません: /var/www/vhosts/dev.bonesphp.com/about
php.ini エラー設定が E_ALL / STRICT に設定されています
これを修正する方法を知っている人はいますか?
前もって感謝します!
更新: 2013 年 5 月 12 日
Apache で書き換えログを有効にしました。これは、上記の URL にアクセスしようとすると、書き換えログに次のように表示されます。
127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747170a0/initial] (3) [perdir /var/www/vhosts /dev.bonesphp.com/] パス情報ポストフィックスを追加: /var/www/vhosts/dev.bonesphp.com/about -> /var/www/vhosts/dev.bonesphp.com/about/test 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747170a0/initial] (3) [perdir /var/www/vhosts /dev.bonesphp.com/] ディレクトリごとの接頭辞を取り除きます: /var/www/vhosts/dev.bonesphp.com/about/test -> about/test 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747170a0/initial] (3) [perdir /var/www/vhosts /dev.bonesphp.com/] パターン '^([a-zA-Z\-_]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9] の適用*)?/?([a-zA-Z0-9]*)?/?$' to uri 'about/test' 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747170a0/initial] (2) [perdir /var/www/vhosts /dev.bonesphp.com/] 'about/test' を書き換え -> 'index.php?controller=about&method=test¶m1=¶m2=' 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747170a0/initial] (3) 分割 uri=index.php?controller =about&method=test¶m1=¶m2= -> uri=index.php, args=controller=about&method=test¶m1=¶m2= 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747170a0/initial] (3) [perdir /var/www/vhosts /dev.bonesphp.com/] ディレクトリごとのプレフィックスを追加: index.php -> /var/www/vhosts/dev.bonesphp.com/index.php 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747170a0/initial] (2) [perdir /var/www/vhosts /dev.bonesphp.com/] document_root プレフィックスを取り除きます: /var/www/vhosts/dev.bonesphp.com/index.php -> /index.php 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747170a0/initial] (1) [perdir /var/www/vhosts /dev.bonesphp.com/] /index.php による内部リダイレクト [INTERNAL REDIRECT] 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b6e4a3508/initial/redir#1] (3) [perdir /var /www/vhosts/dev.bonesphp.com/] ディレクトリごとの接頭辞を取り除きます: /var/www/vhosts/dev.bonesphp.com/index.php -> index.php 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b6e4a3508/initial/redir#1] (3) [perdir /var /www/vhosts/dev.bonesphp.com/] パターン '^([a-zA-Z\-_]*)/?([a-zA-Z]*)?/?([a-zA- Z0-9]*)?/?([a-zA-Z0-9]*)?/?$' から uri'index.php' 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b6e4a3508/initial/redir#1] (3) [perdir /var /www/vhosts/dev.bonesphp.com/] ディレクトリごとの接頭辞を取り除きます: /var/www/vhosts/dev.bonesphp.com/index.php -> index.php 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b6e4a3508/initial/redir#1] (3) [perdir /var /www/vhosts/dev.bonesphp.com/] パターン '(^|/)\.' を適用しています。URI「index.php」へ 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b6e4a3508/initial/redir#1] (1) [perdir /var /www/vhosts/dev.bonesphp.com/] パススルー /var/www/vhosts/dev.bonesphp.com/index.php 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747130a0/initial] (3) [perdir /var/www/vhosts /dev.bonesphp.com/] パス情報ポストフィックスを追加: /var/www/vhosts/dev.bonesphp.com/about -> /var/www/vhosts/dev.bonesphp.com/about/favicon.ico 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747130a0/initial] (3) [perdir /var/www/vhosts /dev.bonesphp.com/] ディレクトリごとの接頭辞を取り除きます: /var/www/vhosts/dev.bonesphp.com/about/favicon.ico -> about/favicon.ico 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747130a0/initial] (3) [perdir /var/www/vhosts /dev.bonesphp.com/] パターン '^([a-zA-Z\-_]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9] の適用*)?/?([a-zA-Z0-9]*)?/?$' to uri'about/favicon.ico' 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747130a0/initial] (3) [perdir /var/www/vhosts /dev.bonesphp.com/] パス情報ポストフィックスを追加: /var/www/vhosts/dev.bonesphp.com/about -> /var/www/vhosts/dev.bonesphp.com/about/favicon.ico 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747130a0/initial] (3) [perdir /var/www/vhosts /dev.bonesphp.com/] ディレクトリごとの接頭辞を取り除きます: /var/www/vhosts/dev.bonesphp.com/about/favicon.ico -> about/favicon.ico 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747130a0/initial] (3) [perdir /var/www/vhosts /dev.bonesphp.com/] パターン '(^|/)\.' を適用しています。「about/favicon.ico」をウリに 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b747130a0/initial] (1) [perdir /var/www/vhosts /dev.bonesphp.com/] /var/www/vhosts/dev.bonesphp.com/about を通過します 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b6e4a1290/initial/redir#1] (3) [perdir /var /www/vhosts/dev.bonesphp.com/] ディレクトリごとのプレフィックスを削除: /var/www/vhosts/dev.bonesphp.com/404.html -> 404.html 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b6e4a1290/initial/redir#1] (3) [perdir /var /www/vhosts/dev.bonesphp.com/] パターン '^([a-zA-Z\-_]*)/?([a-zA-Z]*)?/?([a-zA- Z0-9]*)?/?([a-zA-Z0-9]*)?/?$' から uri'404.html' 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b6e4a1290/initial/redir#1] (3) [perdir /var /www/vhosts/dev.bonesphp.com/] ディレクトリごとのプレフィックスを削除: /var/www/vhosts/dev.bonesphp.com/404.html -> 404.html 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b6e4a1290/initial/redir#1] (3) [perdir /var /www/vhosts/dev.bonesphp.com/] パターン '(^|/)\.' を適用しています。uri「404.html」へ 127.0.0.1 - - [12/May/2013:17:52:35 --0400] [dev.bonesphp.com/sid#7f0b748dc0a8][rid#7f0b6e4a1290/initial/redir#1] (1) [perdir /var /www/vhosts/dev.bonesphp.com/] パススルー /var/www/vhosts/dev.bonesphp.com/404.html