Htacces Apache结束标志替代方案

Htacces Apache结束标志替代方案,apache,.htaccess,Apache,.htaccess,我为小型项目编写了一个小型框架(PHP),除了已定义的路径外,所有这些都应该重定向到index.PHP?path=$1。对于结束标志,这是没有问题的。但是,自从Apache2.3以来,END标志仍然存在,并且脚本也应该在Apache2.2服务器上工作 有人知道我如何在没有结束标志的情况下实现这一点吗 RewriteEngine on # Define static redicts RewriteRule ^image/(.+)$ public/image/$1 [END,QSA] Rewrit

我为小型项目编写了一个小型框架(PHP),除了已定义的路径外,所有这些都应该重定向到index.PHP?path=$1。对于结束标志,这是没有问题的。但是,自从Apache2.3以来,END标志仍然存在,并且脚本也应该在Apache2.2服务器上工作

有人知道我如何在没有结束标志的情况下实现这一点吗

RewriteEngine on

# Define static redicts
RewriteRule ^image/(.+)$ public/image/$1 [END,QSA]
RewriteRule ^css/(.+)$ public/css/$1 [END,QSA]
RewriteRule ^js/(.+)$ public/js/$1 [END,QSA]
RewriteRule ^lib/js/core/(.+)$ core/lib/js/$1 [END,QSA]
RewriteRule ^lib/js/(.+)$ public/lib/js/$1 [END,QSA]
RewriteRule ^cache/(.+)$ public/cache/$1 [END,QSA]
RewriteRule ^download/(.+)$ public/download/$1 [END,QSA]

# Define custom redicts
RewriteRule ^page/([0-9]+)$ index.php?path=index.php&page=$1 [END,QSA]

# Define all other redicts
RewriteRule ^(.+)$ index.php?path=$1 [L,QSA]

由于您的所有规则都以
end
标志结束,因此您或多或少希望防止重写引擎的任何循环。要在不使用
END
标志的情况下完成相同的操作,请将它们全部替换为
L
标志,并在开头添加一个直通规则:

RewriteEngine on

# pass-through if another rewrite rule has been applied already
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

# Define static redicts
RewriteRule ^image/(.+)$ public/image/$1 [L,QSA]
RewriteRule ^css/(.+)$ public/css/$1 [L,QSA]
RewriteRule ^js/(.+)$ public/js/$1 [L,QSA]
RewriteRule ^lib/js/core/(.+)$ core/lib/js/$1 [L,QSA]
RewriteRule ^lib/js/(.+)$ public/lib/js/$1 [L,QSA]
RewriteRule ^cache/(.+)$ public/cache/$1 [L,QSA]
RewriteRule ^download/(.+)$ public/download/$1 [L,QSA]

# Define custom redicts
RewriteRule ^page/([0-9]+)$ index.php?path=index.php&page=$1 [L,QSA]

# Define all other redicts
RewriteRule ^(.+)$ index.php?path=$1 [L,QSA]