Как написать переписать URL в nginx? - PullRequest
24 голосов
/ 02 декабря 2010

Я хочу, чтобы люди, набрав http://www.myweb.com/like/1234456, перенаправили на http://www.myweb.com/item.php?itemid=1234456

Я написал что-то подобное в конфиге, но это не работает.

location = ^~/like/ {
                rewrite ^1234456  ../likeitem.php?item=1234456break;
                return 403;
        }

это всего лишь тест.Я еще не использовал $ match.

Я также перезагружаю свой сервер ngnix, но все же .. он не выполняет перенаправление.

Ответы [ 2 ]

52 голосов
/ 24 апреля 2012

Приведенный выше код не будет работать из-за отсутствия $ и плохого использования команды return.

Приведенный ниже код работает с Nginx, включая версию 0.8.54.

Формат ниже:

  1. DesiredURL
  2. Фактический URL
  3. Nginx_Rule

Они должны быть внутри location / {}

http://example.com/notes/343
http://example.com/notes.php?id=343

rewrite ^/notes/(.*)$ /notes.php?id=$1 last;

http://example.com/users/BlackBenzKid
http://example.com/user.php?username=BlackBenzKid

rewrite ^/users/(.*)$ /user.php?username=$1 last;

http://example.com/top
http://example.com/top.php

rewrite ^/top?$ /top.php last;

Комплекс и дальше

http://example.com/users/BlackBenzKid/gallery
http://example.com/user.php?username=BlackBenzKid&page=gallery

rewrite ^/users/(.*)/gallery$ /user.php?username=$1&page=gallery last;
2 голосов
/ 02 октября 2015

Попробуйте это,

server {
  server_name www.myweb.com;
  rewrite ^/like/(.*) http://www.myweb.com/item.php?itemid=$1 permanent;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...