Joomla at nginx - 删除斜线无法正常工作

Joomla at nginx - 删除斜线无法正常工作

我正在使用 nginx 1.10.3 运行 joomla 3.7.3,在删除尾部斜杠时遇到问题。我已打开“搜索引擎友好 URL”,以及“使用 URL 重写”。

我的 nginx conf 文件中有这些内容:

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/类别

但当我尝试访问http://000.000.00.000/管理员/现在无法访问,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/管理员/服务器将我重定向回我的主页http://000.000.00.000/

请帮我解决这个问题。

答案1

目前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;
    }

答案2

参加聚会已经很晚了,但经过几个小时寻找解决方案后,我似乎已经通过在“/”前面添加一个简单的“~”解决了这个问题。

#Joomla public frontend application
location ~ / {
    try_files $uri $uri/ /index.php?$args;
}

现在,我的 SEF 网址中是否有尾随斜杠并不重要。

相关内容