URL-адрес маски nginx не перенаправлен

У меня есть сайт, работающий на nginx.

в моем файле nginx / sites-available / default у меня есть строка:

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

Это позволяет сделать examplesite.com перенаправленным на examplesite.com/search.php?path=$1 и затем замаскировать этот новый URL. Таким образом, URL-адрес выглядит как «examplesite.com» и работает как examplesite.com/search.php?path=$1.

Я хотел бы сделать что-то другое.

Я бы не хотел изменять функциональность examplesite.com, а вместо этого сделать URL-адрес examplesite.com/search.php?path=$1 таким, чтобы он отображался как examplesite.com/$1 и сохранил его прежнюю функциональность.

Поэтому я не хочу перенаправлять, просто сделайте examplesite.com/search.php?path=$1 как examplesite.com/$1

Но, похоже, что переписать не может справиться с этой функциональностью. Возможно ли иметь такую ​​функциональность в nginx?

РЕДАКТИРОВАТЬ 1

Например:

У меня есть URL http://www.examplesite.com/search.php?search=house&место = чикаго

Я хотел бы сохранить функциональность, но просто сделать так, чтобы она выглядела так:

http://www.examplesite.com/chicago/house

РЕДАКТИРОВАТЬ 2

У меня есть код, который изменяется:

http://www.examplesite.com/search.php?search_title=apple&SEARCH_LOCATION = бостон

чтобы:

http://www.examplesite.com/boston/apple?search_title=apple&SEARCH_LOCATION = бостон

Это код:

if ($args ~* "search_title=[a-z]*&search_location=[a-z]*") {
rewrite ^/search.php?(.*)$ http://www.examplesite.com/$arg_search_location/$arg_search_title last;
}

Но проблема в том, что это приводит к сбою кода PHP на сайте, и он все равно отображает все параметры в конце.

РЕДАКТИРОВАТЬ 3

Посмотрев на это: https://serverfault.com/questions/160790/nginx-rewrite-for-an-url-with-parameters как предложено в комментариях, теперь я могу отобразить правильный URL:

http://www.examplesite.com/boston/apple

Добавляя? в конце, делая мой текущий код это:

if ($args ~* "search_title=[a-z]*&search_location=[a-z]*") {
rewrite ^/search.php?(.*)$ http://www.examplesite.com/$arg_search_location/$arg_search_title? last;
}

Но этот URL — это URL, который читает PHP. Итак, я получаю 404 Not Found, что имеет смысл.

Можно ли заставить PHP читать старый URL-адрес, но иметь URL-адрес в браузере, как сейчас?

РЕДАКТИРОВАТЬ 4

Я не уверен, но я думаю, что функция перезаписи nginx может быть неспособна делать то, что я хочу, поэтому я смотрю на proxy_pass и proxy_set_header

РЕДАКТИРОВАТЬ 5

У меня есть второй вопрос, который подходит к этой проблеме с другой стороны: URL перенаправления Nginx в URL PHP GET

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]