Apache 现有文件的mod_重写规则

Apache 现有文件的mod_重写规则,apache,mod-rewrite,Apache,Mod Rewrite,我正在定义mod_rewrite规则,如果请求的文件不存在,它会将所有请求重写到my/application.php,否则不会进行任何重写。这很简单: RewriteBase / RewriteCond %{REQUEST_FILENAME} !-s RewriteRule .* application.php [PT] 代码只有一个问题。假设我有foo.html文件。然后请求如下: 将出现404错误。 为什么? 将出现404错误。为什么? 因为那个URL不存在。它正在/foo.html/so

我正在定义mod_rewrite规则,如果请求的文件不存在,它会将所有请求重写到my/application.php,否则不会进行任何重写。这很简单:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule .* application.php [PT]
代码只有一个问题。假设我有foo.html文件。然后请求如下:

将出现404错误。 为什么?

将出现404错误。为什么?

因为那个URL不存在。它正在/foo.html/some/other文件夹中查找文件字符串,但它不在那里

要使用http://example.com/foo.html/some/other/string URL结构—将第一个条目视为文件名,其余条目视为参数—被调用。它与mod_rewrite无关,但如果在Apache配置中启用以下功能,它将可用:

 AcceptPathInfo On
看起来该设置当前已为您关闭

如果启用它,文件名后面的部分将可用于foo.html-在PHP中,它将位于

$_SERVER["PATH_INFO"]
变数

因为这种方法不需要重写模块处于活动状态,所以有时被称为穷人的mod_重写——它工作得很好,但不如真正的重写灵活