Symfony 6 -在wig模板上生成带有“https”的URL

5gfr0r5j  于 2023-08-06  发布在  其他
关注(0)|答案(3)|浏览(107)

我想使用Twig函数url()生成以https://为前缀的URL。但是,生成的URL始终为http://
我做了这里给出的设置:https://symfony.com/doc/6.2/routing.html#forcing-https-on-generated-urls。
我的config/packages/framework.yaml

framework:                                                                                                                                                                             
    http_method_override: false                                                                             
    handle_all_throwables: true                                                                             
    ...

字符串
我的config/routes.yaml

controllers:                                         
    resource:                                        
        path: ../src/Controller/                     
        namespace: App\Controller                    
    type: attribute                                  
    defaults: [https] // note HTTPS here


我正在使用PROD环境。
我的.env文件是:

APP_ENV=prod
APP_URL=https://something... // note HTTPS here


已使用prod选项清除缓存。
但是,当我使用twig模板时:

{{ url('my_route') }}


所生成的路由是正确的,但仍然在http(而不是https)中。
我错过了什么吗?

5ssjco0h

5ssjco0h1#

看这里:https://symfony.com/doc/current/routing.html#forcing-https-on-generated-urls你会发现你错过了配置中的schemes键。下面是给出的示例:

# config/routes/annotations.yaml
controllers:
    resource: '../../src/Controller/'
    type: annotation
    defaults:
        schemes: [https]

字符串
或者按路由执行以下操作:

#[Route('/login', name: 'login', schemes: ['https'])]

xzlaal3s

xzlaal3s2#

检查您的Web服务器(ngnix,apache等)配置,它在内部使用端口80
有一个技巧来测试:注解掉listen 80,如果您的站点不可用,则意味着它使用端口80

4c8rllxm

4c8rllxm3#

找到了。使用{{ absolute_url(path('my_route')) }}修复了它。我的链接使用https://方案呈现。
谢谢大家的回复。我想我从Arleigh Hix建议中所做的修复也是我问题的一部分。

相关问题