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

Joomla на nginx - удаление косой черты не работает должным образом

Я запускаю joomla 3.7.3 с помощью nginx 1.10.3, и у меня проблема с удалением завершающих слэшей. У меня включены «удобные для поисковых систем URL», а также «Использовать перезапись URL».

В моем файле конфигурации nginx есть следующие вещи:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/folder;

    index index.php index.html index.htm default.html default.htm;

    rewrite ^/(.+)/$ /$1 permanent;

    server_name 000.000.00.000;
    server_name_in_redirect off;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
        return 403;
        error_page 403 /403_error.html;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

И работает, но частично. URL-адреса вроде:

http://000.000.00.000/category/ конечно стал http://000.000.00.000/category

но когда я пытаюсь получить доступ http://000.000.00.000/administrator/ теперь он недоступен, и Chrome сообщает ERR_TOO_MANY_REDIRECTS

Я не могу понять, как это исправить, я также пытался заменить:

location / {
    try_files $uri $uri/ /index.php?$args;
}

с этим:

location / {
    try_files $uri /index.php?$args;
}

Но потом, когда я пытаюсь получить доступ http://000.000.00.000/administrator/ сервер перенаправляет меня обратно на мою домашнюю страницу http://000.000.00.000/

Пожалуйста, помогите мне разобраться в этом.

В настоящее время rewrite происходит до и независимо от try_files внутри location.

Вы можете попытаться поместить его в определенное место после тестирования статических файлов, например.

    location / {
        try_files $uri $uri/ @joomlaurls;
    }

    location @joomlaurls {
        rewrite ^/(.+)/$ /$1 permanent;
        try_files $uri $uri/ /index.php?$args;
        error_page 404 = /index.php;
    }