1. ホーム
  2. angularjs

[解決済み] Angularのルートに対するhtaccessのリダイレクト

2023-06-13 12:37:21

質問

私は、いくつかのルートを持つアンギュラーアプリケーションを持っています。

site.com/
site.com/page
site.com/page/4

angularのhtml5ルーティングモードを使用すると、アプリケーション内からリンクをクリックするとこれらは正しく解決されますが、ハードリフレッシュを行うともちろん404エラーになります。これを修正するために、私は基本的な htaccess の書き換えを実装してみました。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_METHOD} !OPTIONS
RewriteRule ^(.*)$ index.html [L]

これはangularのリクエストには有効ですが、私のドメイン内でスクリプトをロードしたり、ajaxコールをしようとすると、次のようになります。

<script src="/app/programs/script.js"></script>

このスクリプトはロードされません。リクエストがリダイレクトされ、.htaccess がリクエストをリルートすべきと考えているように index.html ページをロードしようとします - このファイルが存在することを知らないので、リダイレクトではなくファイルをロードすべきです。

解決すべき実際のファイルがない場合にのみ、htaccess に index.html (ビュー パラメータ付き) に要求をリダイレクトさせる方法はありますか?

どのように解決するのですか?

のようなスニペットを使用します。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*) /index.html [NC,L]

これは、実際のリソースがある場合はそのリソースにスキップし index.html にスキップします。