Nginx は履歴モードでのページ更新の 404 問題をどのように解決しますか?
事前知識
シングル ページ アプリケーション (SPA - シングル ページ アプリケーション)
最初のページのみをロードしますtime このとき、HTML ページとそのパブリック静的リソースのみが返され、後続のページ ジャンプではサーバーから HTML ファイルがフェッチされません。 (ハッシュと履歴ルーティングは、ページを更新せずにブラウザ URL の変更を実装します)ハッシュ ルーティング
例: www.baidu.com/#/home、元々はハッシュを結合するために使用されます。アンカーポイントはページビューの制御を実現します #以降の値が変化してもページの再リクエストは行われません これは主にウィンドウの onhashchange メソッドによって実現されます。ヒストリー ルーティング
ハッシュ ルーティングと比較した場合、最も直感的な変更点は、ルーティングに # がないことです。window.history オブジェクトで一連のメソッドを呼び出すことにより、ページは更新されません。Jump(pushState, replaceState)。
履歴モードでは、URL が変更されているため、この時点でページを手動で更新すると、ブラウザは新しいページを要求している (新しい HTTP 要求を開始している) と認識します。新しいページは存在しません (バックエンドが構成されていない場合) となり、404 が発生します。
ブラウザに IP またはドメイン名を入力した後に何が起こるかを簡単に説明します (面接の質問のような感じです ????) Enter キーを押すと、ブラウザから送信された http が html をリクエストします。一連の転送とアドレス指定の解析の後、ファイルはターゲット IP が存在するサーバーのポート 80 (デフォルト) で受信されます。この時点で問題が発生します。サーバーの 80 インターフェイスが HTTP リクエストを受信した後、何かを返すには、今回は Nginx が静的リソース プロキシを実行する必要があります そしてどの静的ファイルを返すかをサーバーに指示します
Nginx
一般的なプロジェクトの場合デプロイメントでは、nginx.conf 構成ファイルを処理する必要があります。
このファイルについて知っておくべきことは次のとおりです
.... # http 是指令块,针对http网络传输的一些指令配置 http { #文件扩展名与文件类型映射表 include mime.types; #设置客户端与服务端请求的超时时间 keepalive_timeout 65; # 开启压缩功能,目的:提高传输效率,节省带宽 gzip on server { #监听端口 listen 80; #服务命名,最好就是用这个服务器的域名命名 server_name localhost; #指令块,配置外部访问资源和实际资源的对应关系 location /{ root /usr/blog; #表示静态资源所在的目录 index index.html index.htm; #访问这个路径对应的默认静态资源文件或者网页 } } }
location
Syntax
location [=|~|~*|^~|@] uri { ... } location @name { ... }
=: 完全一致を示します
~: 大文字と小文字を区別する正規一致を示します
~*: 大文字と小文字を区別しない正規一致を示します
^~: URI が正規の文字列で始まることを示します
!~: 大文字と小文字が区別される正規表現の不一致を示します
!~*: 大文字と小文字を区別しない通常の非一致を示します。
- #/: ユニバーサル一致。あらゆるリクエストは # に一致します。 ##共通の一致ルール
# 将所有请求直接转发给服务器的9090端口 location = / { proxy_pass http://127.0.0.1:9090/; } # 目录匹配 location ^~ /static/ { root /webroot/static/; } # 后缀匹配 location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ { root /webroot/res/; } # 将/account/开始的请求转发给Account服务器 location /account/ { proxy_pass http://127.0.0.1:8080/ } # 将/order/开始的请求转发给Order服务器 location /order/ { proxy_pass http://127.0.0.1:9090/ }
root と alias
2 つの違いは、nginx が location の後の URL を解釈する方法です
[root]構文: root path[alias]デフォルト値: root html
設定セクション: http、server、location、if
処理結果: root path + location path
構文: alias pathConfigurationセクション:location
処理結果:Use alias path to replace location pathリフレッシュ後の404の問題を解決# 返回/www/root/html/t/a.html的文件 location ^~ /t/ { root /www/root/html/; } # 返回/www/root/html/new_t/a.html的文件 # 把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。 location ^~ /t/ { alias /www/root/html/new_t/; }ログイン後にコピー上記の知識から、更新後、ブラウザーは現在の URL で HTML ファイルを要求しますが、SPA には HTML ファイルが 1 つしかないため、nginx の対応する場所にコード行を構成する必要があることがわかります。 conf
try_files $uri $uri/ /index.html;順番どおりかどうかを nginx に伝える ファイルが存在するかどうかを確認し、存在しない場合は、index.html ファイルにリダイレクトします。
以上がNginx は履歴モードでのページ更新の 404 問題をどのように解決しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Linuxでnginxを開始する手順:nginxがインストールされているかどうかを確認します。 systemctlを使用して、nginxを開始してnginxサービスを開始します。 SystemCTLを使用して、NGINXがシステムスタートアップでNGINXの自動起動を有効にすることができます。 SystemCTLステータスNGINXを使用して、スタートアップが成功していることを確認します。 Webブラウザのhttp:// localhostにアクセスして、デフォルトのウェルカムページを表示します。

サーバーには、要求されたリソースにアクセスする許可がなく、NGINX 403エラーが発生します。ソリューションには以下が含まれます。ファイル許可を確認します。 .htaccess構成を確認してください。 nginx構成を確認してください。 SELINUXアクセス許可を構成します。ファイアウォールルールを確認してください。ブラウザの問題、サーバーの障害、その他の可能なエラーなど、他の原因をトラブルシューティングします。

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Linuxでは、次のコマンドを使用して、nginxが起動されるかどうかを確認します。SystemCTLステータスNGINXコマンド出力に基づいて、「アクティブ:アクティブ(実行)」が表示された場合、NGINXが開始されます。 「アクティブ:非アクティブ(dead)」が表示されると、nginxが停止します。

Nginxクロスドメインの問題を解決するには2つの方法があります。クロスドメイン応答ヘッダーの変更:ディレクティブを追加して、クロスドメイン要求を許可し、許可されたメソッドとヘッダーを指定し、キャッシュ時間を設定します。 CORSモジュールを使用します。モジュールを有効にし、CORSルールを構成して、ドメインクロスリクエスト、メソッド、ヘッダー、キャッシュ時間を許可します。

Nginx 403禁止エラーを修正する方法は?ファイルまたはディレクトリの許可を確認します。 2。HTACCESSファイルを確認します。 3. nginx構成ファイルを確認します。 4。nginxを再起動します。他の考えられる原因には、ファイアウォールルール、Selinux設定、またはアプリケーションの問題が含まれます。

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます
