2016-09-15 4 views
0

nginxの下では、index.htmlなどのページがサブディレクトリまたはWebルートに存在します。 http:127.0.0.1/path/to/index.htmlディレクトリセパレータとして扱わずにnginxにスラッシュを渡します。

わかりにくい理由から、私はときどきスラッシュを使用してこの最後にパラメータを追加して、nginxによって無視されるようにしたいと考えています(javascriptでページ自体)。だから私はしたい

ます。http:?127.0.0.1/path/to/index.html/@fooバー= X

、が、URLを書き換えることなく、同じのindex.htmlページを返すために(なるように例)javascript関数window.location.pathnameは、最後にindex.html/@foo?bar=xという文字列を返します。

私はそれほど些細な質問ではありませんが、謝罪しますが、どのようにnginxが@fooと呼ばれるサブディレクトリindex.htmlを探しないように設定するのですか?しかし、それでもindex.htmlがという名前のディレクトリ内にあるtoというディレクトリ内にあることが分かりますか?path

答えて

1

URIの部分が.html/で終わっている部分を特定し、それを使って内部的に書き直す方法があります。例:

location/{ 
    try_files $uri $uri/ @rewrite; 
} 
location @rewrite { 
    rewrite ^(/.+?\.html)/ $1 last; 
    return 404; 
} 

JavaScriptで見られるURIには影響しません。

詳細はthis documentを参照してください。

+0

ありがとうございました。私はファイルが存在するかどうかをテストする必要はなかったので、 'location〜* /(\ w + /)?my/special/dir/[^ /] +/{rewrite ^(。* my /特別な/ディレクトリ/ [^ /] +)/ $ 1最後; return 404} 'あなたが言ったように、JSに見られるURIは変更されませんでした – user2667066

関連する問題