Рейтинг:4

используйте вместе «rewrite» и «try_files» [Nginx]

флаг cn

Я удалил суффикс «.php» в конце файлов PHP на сервере Nginx с помощью следующего кода, но на этот раз я не могу отправить некоторые данные на сервер.

try_files $uri/ $uri.html $uri.php$is_args$query_string;

Некоторые ссылки на сайте отправляются с помощью Ajax, и расширение «.php» в конце этих ссылок недоступно. Например; https://panel.example.com/app/controller/ajax/собирать

Например, когда я хочу получить доступ к файлу «/collect», к которому я хочу получить доступ через Ajax или напрямую, я получаю сообщение об ошибке «Файл не найден». Потому что я «переписываю» приведенный ниже код и предоставляю чистый URL.

переписать ^/([^/]+)/([^/]+)?$ /index.php?cmd=$1&scd=$2 последним;
переписать ^/([^/]+)/?$ /index.php?cmd=$1 последним;

Пример ссылки: https://panel.example.com/[details|cat|profile]/[subPages(productID, имя пользователя..)]

В результате приведенные выше коды корректны и работают, но не работают одновременно вместе. Как я могу запустить эти два кода одновременно?

Полный файл виртуального хоста Nginx

Рейтинг:4
флаг us

Вы можете попробовать следующий подход:

расположение ~ ^/(?<cmd>[^/]+)/(?<scd>[^/]+) {
    try_files /index.php?cmd=$cmd&scd=$scd=404;
}

расположение ~ ^/(?<cmd>[^/]+)/ {
    try_files /index.php?cmd=$cmd=404;
}

место расположения / {
    try_files $uri/ $uri.html $uri.php$is_args$args;
}

Здесь мы используем алгоритм сопоставления местоположения nginx, чтобы сначала проверить соответствие URL-адреса регулярным выражениям, а затем предпринять соответствующие действия для этого URL-адреса.

Я использую именованные захваты здесь ?<команда> чтобы сделать имена переменных более понятными.

Так же ?$ часть в конце регулярного выражения удаляется, так как это не имеет значения. Обе ?$ и пустое соответствие любой строке.

Emre6 avatar
флаг cn
Спасибо за помощь. К сожалению, я получил ошибку 404, но если я перейду по этому адресу, я не получу никакой ошибки; `https://panel.example.com/index?cmd=login` - [Чтобы не вводить вас в заблуждение, полная конф. Я делюсь контентом](https://pastebin.com/Uk4X8dqt)
djdomi avatar
флаг za
не вставляйте конфигурацию, не используйте службу nopaste

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.