我正在使用Iirf v2.0。
我有以下目录结构:
/
/library
/library/index.php
/webroot
/webroot/images
/Iirf.ini
我有一个包含我的应用程序的库文件夹、一个 webroot 文件夹(其中包含图像、样式表等)和一个 Iirf.ini 配置文件。
如果文件在 webroot 下不存在,我想将所有请求重定向到 /library/index.php 。
例如:
Request Response
/images/blah.png -> /webroot/images/blah.png
/news -> /library/index.php
我的 Iirf.ini 配置有:
RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /library/index.php [L]
它将所有内容重定向到,/library/index.php
但我无法确定如何检查REQUEST_FILENAME
webroot 下是否存在。
我已经看过这个问题,但我无权访问DOCUMENT_ROOT
. 它给了我以下信息(取自日志):
Thu Jul 15 11:46:21 - 760 - ReplaceServerVariables: VariableName='REQUEST_FILENAME' Value='C:\web\favicon.ico'
Thu Jul 15 11:46:21 - 760 - ReplaceServerVariables: in='%{DOCUMENT_ROOT}/webroot/%{REQUEST_FILENAME}' out='DOCUMENT_ROOT/webroot/C:\web\favicon.ico'
任何帮助将不胜感激。
---编辑--
经过更多阅读和 Tim 的建议,我更新了我的配置:
RewriteCond $0 !^/webroot
RewriteRule ^.*$ /webroot$0 [I]
RewriteCond $0 !-f
RewriteRule ^/webroot/(.*)$ /library/index.php [I,L,QSA]
它正确传递,/library/index.php
但它仍然不检查现有文件(即使它似乎说它确实如此)。
Thu Jul 15 14:47:30 - 3444 - EvalCondition: checking '/webroot/images/buttons/submit.gif' against pattern '!-f'
Thu Jul 15 14:47:30 - 3444 - EvalCondition: cond->SpecialConditionType= 'f'
Thu Jul 15 14:47:30 - 3444 - EvalCondition: Special: it is not a file
我想我将不得不联系过滤器的作者。