由于路由器的限制,我需要重写api/mobile/3/*
到api/mobile/v3/*
的链接,我们正在对现有代码库进行现代化改造(路径不能以数字开头,因为它们会映射到php命名空间)
如果我在api重写中添加一个R标志,以下情况有效 - 因为它会将我重定向到正确的位置。
我 无法 进行重定向,因为使用此API的现有应用不会遵循重定向。
# make sure mod_rewrite is ON
RewriteEngine On
# rewrite api 3 to v3
RewriteRule ^api/mobile/3/(.*) api/mobile/v3/$1 [QSA]
# send other requests to the application
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [QSA,L]
当我删除前控制器调用时,Apache给了我一个404到我想要的正确的 v3路径,所以我怀疑的问题是在第一个RewriteRule和第二个的组合中。
我在写这篇文章时意识到这可能是因为重写只是改变了执行文件而不是SERVER变量。
有没有办法让apache重写那些传递给前端控制器的内容以使其工作?