簡體   English   中英

Symfony 重寫 nginx

[英]Symfony rewrite nginx

我正在使用 Symfony 3.4,並且我已經將我的 nginx 配置為直接使用http://example.org/my-route而不是http://example.org/app.php/my-route

server {
    location / {
        try_files $uri /app.php$is_args$args;
    }

    location ~ ^/(app_dev|config)\.php(/|$) {
        # bla bla bla
    }

    location ~ ^/app\.php(/|$) {
        # bla bla bla
    }
}

但現在我想使用http://example.org/app.php/my-route將訪問我網站的用戶重定向到http://example.org/my-route

我嘗試創建一個新的重寫,但我得到了循環重定向

rewrite ^/app.php(.*) /$1 permanent;

我應該只在 app.php 中添加一個 header() 嗎?

if (strpos($request->getUri(), $request->getHost().'/app.php') !== false) {
    $uri = str_replace($request->getHost().'/app.php', $request->getHost(), $request->getUri());
    header('Location: ' . $uri, true, 301);
}

為避免循環,您需要確定/app.php是原始請求,而不是由try_files語句生成的相同 URI。

原始請求可以在$request_uri變量中找到,可以使用if塊進行測試。

例如:

if ($request_uri ~ ^/app.php(.+)$) { return 301 $1; }

請參閱有關使用if 注意事項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM