Подтвердить что ты не робот

Как написать переписывание URL в nginx?

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

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

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

Это просто тест. Я еще не использовал сопоставление $.

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

4b9b3361

Ответ 1

Код выше не будет работать из-за отсутствия $и плохого использования команды return. Код выше работает с Nginx, включая версию 0.8.54.

Формат ниже: DesiredURL Фактический URL 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

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

server {
  server_name www.myweb.com;
  rewrite ^/like/(.*) http://www.myweb.com/item.php?itemid=$1 permanent;
}