mod_rewrite に問題があります。すべてのファイルに .php 拡張子が付いている基本的な php Web サイトがあります。
私がしたいことは次のとおりです。
www.site.com/file および www.site.com/file/
どちらも www.site.com/file.php を提供しますが、拡張子は表示されません (したがって、URL バーには www.site.com/file が表示されます)
www.site.com/file.php と入力すると、www.site.com/file にリダイレクトされます。
私の .htaccess コードは次のとおりです。
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^([^/]+)/$ /$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ $1 [R=301,L]
RewriteRule ^([^/.]+)$ $1.php [L]
# Rules For file inside subfolders like
# /folder/myfile --> /folder/myfile.php
# and
# /folder/myfile/ --> /folder/myfile
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/([^/]+)/$ /$1/$2 [R=301,L]
RewriteRule ^(.+)/([^/.]+)$ $1/$2.php [L]
最初の 2 つ (file.php を提供する /file および /file/) は問題なく動作しますが、www.site.com/file.php と入力すると、ブラウザーは次の場所にリダイレクトされます。
http://www.site.com/home/siteuser/public_html/file
404エラーが発生します
書き換えログには次のように表示されます (ログレベル 2)。
[08/Jan/2013:17:35:33 +0000] [www.mysite.com/sid#b970c168][rid#b9914e08/initial] (2) [perdir /home/mysite.com/public_html/] rewrite 'about-us.php' -> 'about-us'
[08/Jan/2013:17:35:33 +0000] [www.mysite.com/sid#b970c168][rid#b9914e08/initial] (2) [perdir /home/mysite.com/public_html/] explicitly forcing redirect with http://www.mysite.com/home/mysite.com/public_html/about-us
[08/Jan/2013:17:35:33 +0000] [www.mysite.com/sid#b970c168][rid#b9914e08/initial] (1) [perdir /home/mysite.com/public_html/] escaping http://www.mysite.com/home/mysite.com/public_html/about-us for redirect
[08/Jan/2013:17:35:33 +0000] [www.mysite.com/sid#b970c168][rid#b9914e08/initial] (1) [perdir /home/mysite.com/public_html/] redirect to http://www.mysite.com/home/mysite.com/public_html/about-us [REDIRECT/301]
[08/Jan/2013:17:35:33 +0000] [www.mysite.com/sid#b970c168][rid#b9914e08/initial] (2) [perdir /home/mysite.com/public_html/] rewrite 'home/mysite.com/public_html/about-us' -> 'home/mysite.com/public_html/about-us.php'
[08/Jan/2013:17:35:33 +0000] [www.mysite.com/sid#b970c168][rid#b9914e08/initial] (2) [perdir /home/mysite.com/public_html/] strip document_root prefix: /home/mysite.com/public_html/home/mysite.com/public_html/about-us.php -> /home/mysite.com/public_html/about-us.php
[08/Jan/2013:17:35:33 +0000] [www.mysite.com/sid#b970c168][rid#b9914e08/initial] (1) [perdir /home/mysite.com/public_html/] internal redirect with /home/mysite.com/public_html/about-us.php [INTERNAL REDIRECT]
[08/Jan/2013:17:35:33 +0000] [www.mysite.com/sid#b970c168][rid#b991e190/initial/redir#1] (1) [perdir /home/mysite.com/public_html/] pass through /home/mysite.com/public_html/home
[08/Jan/2013:17:35:34 +0000] [www.mysite.com/sid#b970c168][rid#b9914e08/initial] (1) [perdir /home/mysite.com/public_html/] pass through /home/mysite.com/public_html/favicon.ico
ファイル パスへのリダイレクトを停止し、代わりに www.site.com/file にリダイレクトするにはどうすればよいですか?