将RewriteBase分配给环境变量

时间:2017-05-18 09:46:46

标签: apache symfony mod-rewrite

我正在开发一个现有的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前置两次?

我希望这个问题有道理 - 我可能错过了一些相当基本的东西!

0 个答案:

没有答案