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

如何在Sulu.io项目中移除默认语言的URL区域前缀

解决Sulu.io默认语言URL不带前缀的配置问题

你遇到的核心问题是:明明配置了默认法语的URL不带语言前缀,但所有请求还是被重定向到带/fr的路径,没法实现{host}/mon-article(法语)和{host}/en/my-article(英语)的预期URL结构。

你的现有配置里,默认语言的URL规则没有被优先匹配,导致Sulu走了通用的带语言前缀的规则。下面是具体的解决方法:

正确的URL配置方案

修改你的环境URL配置,把默认语言的规则放在最前面(Sulu会按顺序匹配规则,优先命中第一条符合的):

<environment type="dev">
  <urls>
    <!-- 优先匹配默认语言,不带前缀 -->
    <url language="fr">{host}</url>
    <!-- 非默认语言使用带前缀的规则 -->
    <url language="en">{host}/en</url>
  </urls>
</environment>

如果你想保留通用规则(比如后续新增语言时不用逐个配置),也可以这样写,同样要保证默认语言规则在最上方:

<environment type="dev">
  <urls>
    <url language="fr">{host}</url>
    <url>{host}/{localization}</url>
  </urls>
</environment>

为什么原配置不生效?

你原来的配置中,虽然写了默认语言的URL规则,但因为通用规则{host}/{localization}的匹配优先级问题,Sulu还是默认给所有请求加上了语言前缀。把默认语言的规则放在最顶部,就能确保法语请求直接命中不带前缀的URL,不会被重定向到/fr路径。

验证配置生效的步骤

  1. 清除Sulu缓存,确保新配置生效:
    bin/console cache:clear --env=dev
    
  2. 测试访问{host}/mon-article,应该直接加载法语页面,无重定向;
  3. 测试访问{host}/en/my-article,正常加载英语页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:40:57