2016-06-22 6 views
0

Я URL как этот http://www.example.com/index.php?page=profile&id=324&opt=edit&cat=23& ...Перепишите все Params запросы на index.php с Nginx

Я бы хотел http://www.example.com/profile/324/edit/23 ...

Я прочитал несколько учебников о том, как удалить PHP расширение, но не знаю, как передать другие параметры

Спасибо всем

UPDATE

Совместим с PHP-решением.

Nginx:

location/{ 
try_files $uri $uri/ /index.php; 
} 

PHP:

$params = explode("/",$_SERVER['REQUEST_URI']); 

и использовать их

ответ

0

На самом деле это довольно легко, если эти PARAMS всегда в том же порядке, как ваш пример.

Добавить правило перезаписи в вашей конфигурации nginx.

rewrite ^/index.php?page=(.*)&id=(.*)&opt=(.*)&cat=(.*)(&.*)$ /$1/$2/$3/$4

Но если порядок Params изменений в каждом запросе, мы, возможно, потребуется другое решение.

UPDATE Nginx магазины запросить арг в переменных, таких как $ arg_name, имя после $ arg_, если фактическое имя запроса паров. Поэтому вам просто нужно переписать запросы index.php с вопросительным знаком хвоста в нужный стиль URL.

rewrite ^/index.php? /$arg_page/$arg_id/$arg_opt/$arg_cat;

+0

спасибо за ответ , к сожалению, порядок и параметры могут быть изменены в каждом запросе – Arkantolo

+0

@Arkantolo Что в вашем index.php? это может быть сделано намного проще с PHP. Я думаю, что нет никакого национального решения nginx, если вы не используете такие модули, как nginx_lua_module. Но это будет более сложным. – Lution

+0

@Arkantolo Возможно, существует собственное решение nginx, я сначала проверю его на своем сайте. – Lution

Смежные вопросы