2012-03-09 2 views
18

Я переписываю URL-адреса в nginx после перезапуска. На старом сайте у меня были параметры запроса в URL-адресе для фильтрации файлов, например.Удалить параметры в nginx rewrite

Новая страница не имеет таких параметров. Я хочу, чтобы удалить их и переписать URL, на главной странице, так что я получаю:

http://www.example.com/mypage/ 

Мое правило переписывают в Nginx является:

location ^~ /mypage.php { 
    rewrite ^/mypage.php$ http://www.example.com/mypage permanent; 
} 

Но с этим правилом параметр еще приложенном. Я думал, что $ остановит nginx от обработки дальнейших значений ... любых идей? Все остальные вопросы касаются того, как добавлять параметры - я просто хочу удалить мины :)

ответ

33

Если у вас возникла аналогичная проблема, после большого поиска ответа, представленного в rewrite docs.

Если вы указали a? в конце переписывания того Nginx будет падать оригинальные $ арг (аргументы)

Так для примера, это будет делать трюк:

location ^~ /mypage.php { 
    rewrite ^/mypage.php$ http://www.example.com/mypage? permanent; 
} 
+0

У вас лучшие навыки чтения, чем у меня;) Большое спасибо! –

+10

Что я хочу, чтобы удалить определенный параметр. – virsir

+0

wait, не будет ли это правило вызывать цикл перенаправления? – defbyte

6

уронить параметр из URL, в этот случай coupon=xxx:

if ($query_string ~ "^(.*)coupon=(.*)$") { 
    rewrite ^(.*)$ $uri? permanent; 
} 

Обратите внимание, что это будет отбрасывать все параметры, если совпадает с заявление. $uri - исходный запрос без параметров.

2

Попробуйте установить переменную $args в пустое место.

set $args '';