2016-04-18 16 views
0

私はnginxを使用するのが初めてで、別のURLにリダイレクトしようとしています。Nginxが/#/ urlを使用してURLにリダイレクト

https://server.com/#/page.html -> https://server.com/page.html

/#/はAngular2のルータ機能を使用してから来ています。 Angular2は起動時にアプリケーション全体を読み込むため、静的なHTMLにページを変更することにしました。この1ページの情報をそのまま表示する必要はありません。

この問題を解決するための私の試みは次のとおりです。 /anotherpage -> /page.htmlからリダイレクトできますが、/#/anotherpage -> /page.htmlはAngular2アプリを読み込み、存在しないルートにルーティングしようとします。この設定と場所のディレクティブを使用して

:ベストプラクティスに関する

server { 
    listen  8001; 
    server_name server.com; 
    ... 
    #SSL Things 
    ... 
    root /to/root/folder/public; 
    #Redirects: 
    location = /anotherpage { 
     rewrite ^/.* https://$server_name/page.html; 
    } 
    #Does not redirect: 
    location = /#/anotherpage { 
     rewrite ^/.* https://$server_name/page.html; 
    } 
} 

任意の提案も同様に歓迎されています。

+1

これには多くの回答があります。ブラウザはサーバにハッシュパートを送ることはないので、あなたのnginxは常に '/'へのリクエストを見るでしょう。 –

+0

私はそれを知らなかったのです。私が '/ folder /#/ loremipsum'を持っているかどうかを調べるには'/folder/'だけがサーバに送られますか?私は編集を混乱させて申し訳ありません。 –

+0

'/'と一致する場所はありません。あなたの場所 'location = /#/ anotherpage'は実際に' example.com /%23/anotherpage'と一致します –

答えて

0

#に遭遇した後、ブラウザは情報を送信しません。

したがって、https://server.com/#/page.htmlを送信する場合は、https://server.com/のみがnginxによって表示されます。

したがって、リダイレクトは不可能であり、クライアント側アプリケーションの変更は唯一のオプションです。

関連する問題