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

nginx переписать без файлов .php?

У меня это настроено в конфигурации сайта nginx, которая отлично работает для перенаправления всех .html запросы через /index.php. Однако он не переписывает test.php к /index.php и вместо этого выдает ошибку 404.

Кто-нибудь может пролить свет, пожалуйста? Вот конфигурация моего сайта:

server {
    listen 80 default_server;

    location / {
            root /srv/www/htdocs;
            index index.php;

            try_files $uri $uri/ /index.php;

            location ~* \.php$ {
                    fastcgi_pass 127.0.0.1:9000;
                    fastcgi_param HTTPS on; # <-- add this line
                    fastcgi_index index.php;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    include /etc/nginx/fastcgi_params;
                    fastcgi_buffer_size 128k;
                    fastcgi_buffers 256 4k;
                    fastcgi_busy_buffers_size 256k;
                    fastcgi_temp_file_write_size 256k;
                    fastcgi_intercept_errors on;
            }
    }
}

Любая помощь приветствуется - я рву волосы!

Когда директива try_files помещается непосредственно на сервер, она оценивается только в том случае, если местоположение не совпадает, поэтому она не вступает в силу, если запрос уже заканчивается на .php. Чтобы исправить это, добавьте try_files $uri /index.php =404; внутри расположения php.

location ~* \.php$ будет соответствовать любому *.php и причина try_files чтобы вернуть его независимо от его существования (отсюда и 404). Рассмотрите возможность использования переписать вместо!