我正在开发一个现有的Symfony项目,该项目使用以下Apache重写规则,我认为该规则最初来自Symfony本身(你可以在这里看到它的一个例子:https://gist.github.com/deehidayat/050eb02100be57c03f22):
# Determine the RewriteBase automatically and set it as environment variable.
# ...
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
据我所知,最终结果是如果设置了RewriteBase
,则会提取此值并将其分配给BASE
环境变量,如果没有,{ {1}}仍未设置 - 到目前为止一直很好!
稍后,环境变量的使用方式如下:
BASE
即。根据需要将所有内容重定向到前端控制器,相对于RewriteRule .? %{ENV:BASE}/app.php [L]
。
我对RewriteBase
很陌生,所以一直在努力解决这个问题,但这部分让我感到困惑,因为我认为mod_rewrite
应该自动添加RewriteRule
到目标网址呢?
为什么我们需要在这里使用环境变量,并且不应该在RewriteBase
前置两次?
我希望这个问题有道理 - 我可能错过了一些相当基本的东西!