我想将所有类似“ /cgi/.*”的请求重定向(301)到我的symfony(3.4)应用程序“ / park”的“停车”页面。
我已经创建了这样一条路线:
old_legacy:
path: /cgi/{catchall}
defaults:
_controller: FrameworkBundle:Redirect:urlRedirect
path: /park
permanets: true
requirements:
catchall: ".*"
当url为“ /cgi/foo/bar"、"cgi/bar.php?x=2”等时,一切正常,但是当URL结尾为“ index.php”时,该方法不起作用: “ /cgi/index.php”,“ cgi / foo / index.php?x = 2”。
我输入了symfony代码(与SF主机相同),发现我的情况有问题:
要获取baseUrl,HttpFoundation/Request
对象会尝试获取php脚本文件名“ SCRIPT_FILENAME”,但是如果 basename 与SCRIPT_NAME相同,它将得到一个!
好,但是SCRIPT_FILENAME是“ /var/www/public/index.php”,而SCRIPT_NAME是“ /cgi/index.php”,并且两个基本名称都是“ index.php”,因此,基本URL用“ /cgi/index.php”,这是错误的,并且基本URL变为“空”。 在故事的结尾,路由器将查找路径“ /”,而不是“ /cgi/index.php”。
其他人有这个问题吗?