我使用URL重写来保留URL的某些部分,并使用位于我的localhost/test
文件夹中的.htaccess文件中的这个简单代码删除其他部分:
RewriteRule ^remove/(.+)$ $1 [NC]
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule .* echo.php?final_url=$0
现在,当我将其应用于网址时:localhost/test/remove/keep/
我得到的final_url
参数包含keep/keep
而不是预期的keep
。
以下是我理解重写过程的方法:
首次重写运行:我的网址重新归结为localhost/test/keep/
(因为它与第一条规则模式相匹配)而不是匹配第二条规则及其条件,因此重新编写为:localhost/test/echo.php?final_url=keep/
现在第二次重写运行:第一个规则模式不再匹配(因为它不会以remove /开头),所以第二个规则(现在请注意URL指向现有文件:echo.php )所以改写应该结束
请纠正我的想法并详细解释究竟发生了什么