Сервер: Nginx
Приложение: PHP
URL-адрес:
/ p / all_articles / user / AB C
/ p / all_articles / user / ABC / page / 123
, что
/ index. php? p = all_articles & user = AB C
/ index. php? p = all_articles & user = ABC & page = 123
ABC = this could be a-zA-Z0-9 as it's username
123 = this could be page numbers 0-9
Попробовал множество комбинаций и Приведенные ниже параметры привели меня гораздо ближе к ожидаемому результату, но он не идеален.
location /p/all_articles {
rewrite ^/p/all_articles/user/(.*)?$ /index.php?p=all_articles&user=$1 last;
rewrite ^/p/all_articles/user/(.*)/page(?:/([0-9]+))?$ /index.php?p=all_articles&user=$1&page=$2 last;
try_files $uri $uri/ /index.php;
}
приведенный выше блок местоположения перезаписи получается только тогда, когда один из них указан в кавычках, другой будет работать, но не вместе.
Аналогично
/ search / QUERY
/ search / QUERY / page / 123
, что
/ index. php? Search = QUERY
/ index. php? Search = QUERY & page = 123
QUERY = anything a-zA-Z0-9 and space
123 = this could be page numbers 0-9
как у all_articles, самое близкое, что я смог получить, это
location /search {
rewrite ^/search /index.php?search last;
rewrite ^/search/(.*)/page(?:/([0-9]+))?$ /index.php?search=$1&page=$2 last;
try_files $uri $uri/ /index.php;
}
Но это работает, чтобы получить один из чистых U RL, когда цитируется другое переписывание, но не вместе.
Буду признателен, если кто-нибудь даст какие-либо ответы для решения этой проблемы.