#php #nginx #url-rewriting
#php #nginx #url-переписывание
Вопрос:
Моя структура папок следующая: у меня есть папка с именем, docs
внутри которой у меня есть 2 файла: all_docs.php
и level.php
у all_docs есть 2 параметра, и у меня есть это правило перезаписи:
rewrite ^/doc-([^/]*)-([^/]*)/?$ /doc/all_docs.php?title=$1amp;lang=$2 last;
Что делает возможным URL, подобный
all_docs.php?title=fashionamp;lang=en
чтобы выглядеть как:
/doc-fashion-en/
Проблема в том, что я также хочу получить доступ level.php внутри папки doc, но
После перезаписи я не могу, потому что nginx запрашивает:
/doc-fashion-en/level.php
который не существует
Я пытался перезаписать ^/doc-([^/])-([^/])/level.php /doc/level.php ?$args;
безуспешно, level.php имеет некоторые параметры get, которые необходимо передать, вот почему я использовал $ args.
Буду признателен за любую помощь
Комментарии:
1. Как должен
level.php
выглядеть запрос на?/doc-title-lang/level.php
?2. Да, точно, исключая такие параметры, как level.php?lang=usamp;volume = 4 и т.д.
Ответ №1:
Эти правила перезаписи должны работать для вас:
rewrite ^/doc-([^/] )-([^/] )/?$ /doc/all_docs.php?title=$1amp;lang=$2 last;
rewrite ^/doc-[^/] -[^/] /level.php(.*)$ /doc/level.php$1 last;
Рассмотрите возможность использования
вместо *
, когда вы уверены, что там должен быть хотя бы один символ. На самом деле, ^/doc-([^/]*)-([^/]*)/?$
совпадает /doc--
. Не уверен, что это намеренно.