这是.htaccess的内容:
Options -Indexes
RewriteEngine On
RewriteBase "/"
# Disallow direct access to PHP files.
RewriteRule ^(.*)\.php$ $1 [F,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?<!common/dispatch\.php/)(.*)?$ common/dispatch.php/$1 [NS,L]
基本上我将我的所有页面(PHP文件)排列为没有mod_rewrite
的直接访问,但我在名为dispatch.php
的目录中也有common
,我通过它希望所有请求都被定向,以便我可以在执行页面脚本之前进行一些处理。
它与大多数框架使用的基本相同,除了我希望页面层次结构位于顶层,并且调度脚本与其自身子目录中的其他一些部分保持一致。
此脚本在我的开发计算机(运行PHP为mod_php
)上运行正常,但在生产计算机上会产生错误,指出“未指定输入文件”。如果在FCGI下运行。在正常的CGI下,它在大多数情况下都有效,但是,例如,如果我转到/foo/bar
(缺少尾部斜线)并且/foo/bar
是docroot中的目录,它会将我发送到{{1} }。脚本的其余部分工作正常,但我真的不希望我的URI像这样被破坏,理想情况下我也希望能够使用FCGI。
对FCGI问题的一个潜在解决方法似乎是将匹配的/foo/bar/?/foo/bar
放在查询字符串中(即在$1
之后),但这会导致我避开各种其他奇怪的行为能够修复。有没有直接的解决方法?
答案 0 :(得分:0)
在php中使用auto_prepend_file
指令会不容易?