【问题标题】:How to create a Nginx's root to a specific Symfony's route?如何为特定 Symfony 的路由创建 Nginx 的根?
【发布时间】:2020-01-19 04:34:36
【问题描述】:

当用户使用特定网址时,我正在尝试个性化特定路线。实际上,我有一个网站的两个域名。第一个是法语,第二个是荷兰语。因此,当用户使用第一个 url 时,我想像往常一样显示 /public。但如果用户使用第二个 url,我想显示 public/index.php/nl。但这是 Symfony 的 (4+) 路线。我为 Nginx 创建了两个配置文件。但是荷兰语配置显示/public而不是/public/index.php/nl。我怎么能用 Nginx 做到这一点。我希望它是不稳定的。

server {
    listen 80;
    server_name www.my-nl-site.be my-nl-site.be;
    root /var/www/html/mysite/public;
    index index.php/nl  

    location / {
            # try to serve file directly, fallback to index.php
            try_files $uri /index.php$is_args$args;
    }

有人可以帮帮我吗?

【问题讨论】:

  • 你认为index.php/nl 是什么? (另外,nginx 中的每个非阻塞指令都必须以 ; 结尾)你明白,index 指令实际上必须指定一个 file,对吧?并且由于 index.php 不能既是文件(对于法语版本)又是 nl 应该位于的目录(对于荷兰语版本),您必须找到不同的方法。我确信有一些关于如何组织多语言环境站点的教程(甚至可能使用 nginx 示例)

标签: symfony nginx symfony4 nginx-location


【解决方案1】:

我找到了 Symfony 的解决方案。我另外创建了一个控制器。

class AppController extends AbstractController
{
    /**
     * @Route("/", name="root")
     */
    public function root(Request $request)
    {
        $request = Request::createFromGlobals();
        $myhost = $request->server->get('HTTP_HOST');

        if( $myhost == 'mywebsitenl.be'){
            $locale = 'nl';
        }else{
            $locale = 'fr';
        }

        return $this->redirectToRoute('home', ['_locale' => $locale]);
    }
}

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 1970-01-01
    • 2014-02-19
    • 2017-04-29
    • 2016-10-10
    • 2014-12-31
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多