Nginx и try_flies не работают должным образом

Я пытаюсь смоделировать Multiviews, но у меня проблема с try_files. Все в порядке, но я хочу переписать все URL не удалось /index.php (но не с 404):

location ~ ^(/.+)/ {
   try_files $uri $uri/ $1.php?$args @extensionless-php /index.php;
}
location @extensionless-php {
   rewrite ^(.*)/ $1.php;
}

ВСЕ URL переписываются в /index.php. Если я удаляю /index.php в конце первого расположения, все в порядке, кроме неуправляемых URL-адресов (которые я хочу переписать в индекс). Любая идея? Спасибо

1 ответ

Решение

Вы можете попытаться удалить /index.php с первого места, как вы сказали. Затем, чтобы сделать его перенаправить на /index.php если php-файл не найден, вы можете добавить несколько строк в location какие ручки .php Запросы:

location ~ \.php$ {
    if (!-f $request_filename) {
        rewrite    .*    /index.php;
    }
    # your other directives such as fastcgi_pass 127.0.0.1:9000; etc.
}
Другие вопросы по тегам