nginx переписать для чистых URL - PullRequest
4 голосов
/ 27 августа 2010

Я пытаюсь добиться того, чтобы люди, которые переходят по адресу: http://www.example.com/$SEARCH-QUERY/$PAGE-NUMBER, перенаправляют на search.php? Query = SEARCH-QUERY & page = PAGE-NUMBER

Я только что понялузнать, как установить nginx и настроить php-fpm, mysql и все такое, но теперь я немного растерялся из-за переписывания.Вот то, что у меня есть, это, кажется, не работает правильно:

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

rewrite ^/search/(.*)$ /search.php?query=$1; 
rewrite ^/search/(.*)$/ /search.php?query=$1;

, а затем для элементов, просматриваемых с постраничными результатами

rewrite ^/search/(.*)/(.*)$ /search.php?query=$1&page=$2;
rewrite ^/search/(.*)/(.*)$/ /search.php?query=$1&page=$2;

Если кто-нибудь может помочь, я буду очень признателен!

Ответы [ 2 ]

3 голосов
/ 03 сентября 2010

В ваших регулярных выражениях есть основная ошибка.

^/search/(.*)$/ никогда не совпадет, потому что $ означает «конец строки». Вы не можете иметь / после конца строки.

Если вам нужен необязательный /, в регулярных выражениях есть модификатор ?.

Итак, попробуйте /search/(.*)/?$.

1 голос
/ 21 сентября 2010

Кроме того, ваше первое регулярное выражение ^/search/(.*)/?$ будет соответствовать всем запросам, начинающимся с /search/: он вставит номер страницы в строку поиска, а также потому, что * включает пустую строкубудет соответствовать пустым строкам поиска.Если второе регулярное выражение ^/search/(.*)/(.*)/?$ появится позже, оно никогда не будет найдено.Если вы хотите захватить строку до первой косой черты, используйте ^/search/([^/]+)/?$ и ^/search/([^/]+)/([^/]+)/?$ (чтобы подстановочные знаки соответствовали строкам символов, не включая / вместо строк всех символов, а + соответствует одному или-больше вместо любого числа).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...