2016-11-11 21 views
0

Nginxでは、書き換えルールで疑問符の前にスラッシュを追加するにはどうすればよいですか?Nginx書き換えルール:疑問符の前にスラッシュを追加

私は、URLの最後にスラッシュを追加することに成功しました。次のようになります。

http://test/xx --> http://test/xx/ 

しかし、疑問符の前にスラッシュを追加することはできません。次のように:

http://test/xx?id=2 --> http://test/xx/?id=2 

私は、次の試してみた:

server { 

    listen 34044; 

    # add trailing slash to url end 
    rewrite ^([^.\?]*[^/])$ $1/ permanent; 

    # add trailing slash before question mark 
    rewrite "^(.*)([^/]{1})\?(.*)$" $1$2/?$3 permanent; 

    location/{ 
    ... 
    } 
} 

をしかし、それは疑問符の前にスラッシュを追加しません。

私は2番目の正規表現にバグがありますが、私はそれを見ることができません。私は必要として、それが動作

rewrite ^([^.]*[^/])$ $1/ permanent; 

:すべてのURLにスラッシュを末尾に追加し、末尾が「前にスラッシュを含めて、私は私が必要とするすべては、以下のような単一の正規表現であることを理解リチャード・スミスのコメント@の後

+1

'?'は、 'location'と' rewrite'ディレクティブで使用される正規化されたURIの一部ではないクエリ文字列の先頭を示します。詳細については、[このドキュメント](http://nginx.org/en/docs/http/request_processing.html)を参照してください。したがって、後で '/'書き直すと、常に '?'の直前になります。 –

+0

ああ!今、私は理解しています、ありがとう!自分の質問に答える..;) – daniilyar

答えて

関連する問題