2014-03-05 6 views
0

Я пытаюсь создать постоянную переадресациюNginx Rewrite Выдать Внешняя ссылка

http://domain.com/member/blog_post_view.php?postId=1 

в

http://blog.domain.com/friendly-url-here 

Исходный URL содержит как? и =, что, я думаю, может быть причиной, но я не уверен.

Я пробовал всевозможные предложения nginx, включая приведенный ниже, но, похоже, не может заставить перенаправление работать и надеется, что кто-то сможет указать мне в правильном направлении.

location /blog_post_view.php?postId=1 { 
    rewrite "/blog_post_view.php\?postId\=1" http://blog.domain.com/friendly-url-here permanent; 
} 

ответ

0

Та часть строки запроса, начиная с вопросительного знака называется query string, в то время как location директива соответствует только часть пути URI.

Вы должны использовать $ arg_ * переменная вместо:

location =/blog_post_view.php { 
    if ($arg_postId = 1) { 
     return 301 http://blog.domain.com/friendly-url-here; 
    } 
} 

Ссылка:

+0

Ммм, я понимаю, что йо u скажите о строке запроса. Я думал, это будет проблемой. К сожалению, этот сниппет не работал для меня – MartinC

+0

Кажется, мне нужно было указать полный путь в местоположении (после имени домена). Как только я использовал /member/blog_post_view.php, все работает так, как я ожидал. Немного gotcha для новичка - я ошибочно предположил, что Nginx определил бы и сопоставил бы с частичным URL-адресом, но, похоже, не так. Благодаря VBart за его замечательную помощь. – MartinC