Как удалить HTML-расширение PHP и косую черту в конце URL для HTML-файлов PHP только для Nginx Server - PullRequest
0 голосов
/ 23 апреля 2019

Я хочу удалить html и php расширение из URL, а затем я хочу добавить косую черту. Пока что я удалил html и php расширение. Тем не менее, есть проблема, когда я пытаюсь получить доступ к index.php. Он не открывается автоматически и показывает ошибку «ERR_TOO_MANY_REDIRECTS». Но если я вручную наберу index.php, то он откроет файл индекса. С другой стороны, index.html открывается автоматически.

Когда я пытаюсь следовать указаниям Добавлять косую черту в конец каждого URL (необходимо правило перезаписи для nginx) , но я получаю ошибку 404


Это мой текущий серверный блок

server {
    server_name test.example.com www.test.example.com;
    root /var/www/html/test.example.com/;

    include /etc/nginx/ssl/test.example.com.conf;

    index index.php index.html index.htm index.nginx-debian.html;

    error_log /var/log/nginx/test_example_com.log;

    location / {

        rewrite ^(/.*)\.html(\?.*)?$ $1$2 permanent;
        rewrite ^/(.*)/$ /$1 permanent;

        try_files $uri/index.html $uri.html $uri/ $uri @extensionless-php;

    }


    location ~ \.php$ {
            try_files $uri $fastcgi_script_name =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            set $path_info $fastcgi_path_info;
            fastcgi_param PATH_INFO $path_info;

            fastcgi_index index.php;
            include fastcgi.conf;
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }

    location @extensionless-php {
        rewrite ^(.*)$ $1.php last;
    }

}

URL

www.test.example.com / [если index.php является индексным файлом]
www.test.example.com/index.php
www.test.example.com/home/index.html
www.test.example.com/home/about.html

Ожидаемый результат:

www.test.example.com /
www.test.example.com/
www.test.example.com/home/
www.test.example.com/home/about/

Текущий результат:

Ошибка - слишком много перенаправлений
www.test.example.com/index.php или www.test.example.com/index
www.test.example.com/home
www.test.example.com/home/about

...