[英]Redirect route to language prefix in Symfony 4
從版本4.1開始,Symfony現在可以處理多語言路由,而無需外部插件( https://symfony.com/blog/new-in-symfony-4-1-internationalized-routing )。 我已經成功翻譯了我的路線並且一切正常,除了當訪問根URL(“/”)時,Symfony呈現404錯誤而不是重定向到語言文件夾,例如“/ en /”。
我做了一些研究,但我發現的大部分內容已經過時了(主要是Symfony 2)。 此外,還遇到了Symfony 3將所有路由重定向到當前語言環境版本,但對於這樣一個簡單的問題,這似乎是一個非常繁瑣的解決方案。
理想情況下,我還想將網址“/ admin”重定向到“/ en / admin”,但如果我無法實現它,我可以忍受它。
這是我的routes / annotations.yaml文件:
controllers:
resource: ../../src/Controller/
type: annotation
prefix:
fr: '/fr'
en: '/en'
de: '/de'
我的翻譯.yaml文件:
framework:
#default_locale: '%locale%'
default_locale: 'en'
translator:
paths:
- '%kernel.project_dir%/translations'
fallbacks:
- 'en'
家庭路線配置:
@Route("/", name="home")
看起來您沒有路由匹配/
,可能是因為您的所有路由都以語言代碼為前綴。
您可以使用命令行工具進行調試:
php bin/console router:match "/"
如果它成功了它應該返回這樣的東西:
[OK] Route "homepage" matches
+--------------+-------------------------------------------------------------------------------------------+
| Property | Value |
+--------------+-------------------------------------------------------------------------------------------+
| Route Name | homepage |
| Path | / |
| Path Regex | #^/$#sD |
| Host | ANY |
| Host Regex | |
| Scheme | ANY |
| Method | GET |
| Requirements | NO CUSTOM |
| Class | Symfony\Component\Routing\Route |
| Defaults | _controller: App\Controller\HomeController::index |
| Options | compiler_class: Symfony\Component\Routing\RouteCompiler |
+--------------+-------------------------------------------------------------------------------------------+
如果不成功,有多種選擇。 您可以為嘗試確定正確語言環境的“/”路由創建一個偵聽器,然后重定向到正確的語言環境,或者只是始終重定向到“主要”語言,例如使用如下路由:
homepage:
path: /
controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::urlRedirectAction
defaults:
path: /en
permanent: true
編輯澄清:
您的routes / annotation.yaml可能如下所示:
controllers:
resource: ../../src/Controller/
type: annotation
prefix:
fr: '/fr'
en: '/en'
de: '/de'
home_fallback:
path: /
controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController::urlRedirectAction
defaults:
path: /en
permanent: true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.