Назад | Перейти на главную страницу

Удаление завершающих слэшей в подкаталоге nginx

У меня есть приложение Symfony по адресу mysite.com и приложение WordPress по адресу mysite.com/blog:

server {
    server_name mysite.com;
    root /var/www/mysite/symfony/web;

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

    location ~ ^/app\.php(/|$) {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        internal;
    }

    location /blog {
        root /var/www/mysite/wordpress;
        rewrite ^/blog/(.+)$ /$1 break;
        try_files $uri $uri/ /blog/index.php$is_args$args;

        location ~ \.php {
            fastcgi_pass 127.0.0.1:9000;
            include fastcgi_params;
            fastcgi_split_path_info ^(?:\/blog\/)(.+\.php)(.*);
            fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        }
    }

    access_log /var/log/nginx/mysite.com-access.log;
    error_log /var/log/nginx/mysite.com-error.log;
}

Когда я получаю доступ к своему маршруту блога (mysite.com/blog), nginx 301 перенаправляет на добавление завершающей косой черты (mysite.com/blog/). Есть ли способ избежать этого перенаправления? Я заметил, что этого не происходит с Symfony - mysite.com/admin работает отлично.

Я пробовал добавить rewrite ^/(.*)/$ /$1;, но это просто приводит к циклу перенаправления.

Завершающий слэш добавлен WordPress. Вы можете отключить его, перейдя в свой WordPress Settings -> Permalinks, выберите настраиваемую структуру и удалите косую черту в конце.