You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony 4.1 Twig表单重定向路径错误问题求助

解决Symfony 4.1表单重定向路径错误问题

这不是Symfony的Bug,而是你的应用请求上下文配置没跟上目录结构的变化导致的。因为你把项目部署在了/forum子目录下,但Symfony默认不知道这个base路径,所以absolute_url('/login')会直接生成根目录下的URL。下面是几个靠谱的解决方法:

方法1:在入口文件中设置请求上下文的Base URL

修改public_html/forum/index.php,在处理请求前明确告诉Symfony应用的base路径:

$kernel = new Kernel($env, $debug);
$request = Request::createFromGlobals();

// 添加这行,设置应用的base URL为/forum
$request->server->set('SCRIPT_NAME', '/forum/index.php');
// 或者直接设置路由上下文的base URL
$kernel->getContainer()->get('router')->getContext()->setBaseUrl('/forum');

$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);

这样Symfony就能正确识别应用所在的子目录,生成的绝对URL会自动带上/forum前缀。

方法2:使用路由名称生成路径(推荐)

不要硬写路径/login,而是用Symfony的路由名称来生成URL,这样会自动适配当前的base路径。假设你的登录路由名称是login,修改Twig模板中的代码:

{{ form_start(formLogin, {'action': path('login'), 'method': 'POST'} ) }}

path()函数会基于当前请求上下文自动生成正确的路径,不管你的应用部署在哪个子目录下都能正常工作,这也是Symfony推荐的最佳实践。

方法3:配置.env文件中的APP_URL

在项目的.env文件中设置应用的完整URL:

APP_URL=http://localhost/forum

不过要注意,这个配置主要用于命令行环境生成URL,Web请求下还是优先依赖请求上下文的设置,所以建议和方法1配合使用。


内容的提问来源于stack exchange,提问作者waha has

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:51:47