У меня это настроено в конфигурации сайта 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). Рассмотрите возможность использования переписать вместо!