此配置用于将URL重写为子目录以进行版本控制,同时还将整个查询字符串推送到名为“request”的单个GET变量中,以便从URL中删除问号。
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]
RewriteRule (www/.*)$ 2.0/public/$1 [L]
RewriteRule ^(.*+)$ 2.0/public/index.php?request=$1 [L]
DirectoryIndex index.php
我把它拼凑在一起并且通过一些奇迹它适用于我的目的,但我仍然不能100%确定原因。我需要所有这些线才能正常工作。具体来说,我需要第2行和第3行的帮助。
我知道[L]标志停止处理当前请求的重写,然后发出新请求,需要根据规则再次处理(这可能解释了第2行)。第3行的目的是什么?
答案 0 :(得分:0)
让我们先给你的行编号,因为你不清楚你所说的是什么:
1. RewriteEngine On
2. RewriteCond %{ENV:REDIRECT_STATUS} 200
3. RewriteRule .* - [L]
4. RewriteRule (www/.*)$ 2.0/public/$1 [L]
5. RewriteRule ^(.*+)$ 2.0/public/index.php?request=$1 [L]
6. DirectoryIndex index.php
现在,让我们试着解释每一行的含义:
答案 1 :(得分:0)
第2行首先使用ENV:REDIRECT_STATUS检查其重定向请求是否为重定向请求,然后立即结束第3行的处理。
您可能需要检查Rewrite Cheat sheet以了解mod_rewrite的其他功能。