Amazon Linux 2インスタンスはApacheを使用してAngular 7アプリケーションをホストしています。 Angular 7アプリケーションにはindex.html
。だけでなく、複数の.js
ファイルとassets
。
index.html
指定されていないパスへのすべてのApacheリクエストがにリダイレクトされるようにするには、どの特定の構文を使用する必要がありますかDocumentRoot
? また、必須構文では、クライアントブラウザがロードされたときにディレクトリ内の.js
すべてのファイルとコンテンツがセカンダリassets
要求として要求されることを許可する必要がありますindex.html
。
たとえば、リモートWebブラウザがリクエストをした場合、Apacheがリクエストに応答するのと同じ方法でApacheが応答したいとしますmydomain.com/randomCharacters
。その後、ファイルとサブディレクトリの内容にアクセスできる必要があります。 index.html
mydomain.com
index.html
index.html
.js
assets
(この場合はDocumentRoot
というディレクトリです/var/www/mydomain.com/public_html
。また、/var/www/mydomain.com/public_html
ディレクトリには、1. index.html
、2.複数の.js
ファイル、3.assets
イメージなどを含むサブディレクトリが含まれています。)
構成をできるだけきれいに保つために、ブロックRedirectMatch
内を使用したいと思います。VirtualHost
これが私の考えです。次の内容をどのように修正する必要がありますか?
<VirtualHost *:80>
ServerName www.mydomain.com
ServerAlias mydomain.com
DocumentRoot /var/www/mydomain.com/public_html
ErrorLog /var/www/mydomain.com/error.log
CustomLog /var/www/mydomain.com/requests.log combined
RedirectMatch 302 ^/(?!index.html$).+ http://mydomain.com
</VirtualHost>
結果のフォレンジック分析:
Firefoxデベロッパーツールの[ネットワーク]タブを開き、上記の操作を試みたときにリクエストを行った結果、すべてのリクエストに応答が表示され、名前付きファイルhttp://mydomain.com
(スクリプトなど)へのすべてのリクエストに応答が提供されたことが示されました。スタイルシートが反応しました。 RedirectMatch 302 ^/(?!index.html$).+ http://mydomain.com
VirtualHost
/
304
302
html
また、同じリクエストのページソースを見ると、コンテンツがindex.html
実際に正しく提供されていますが、コードがファイルまたはサブディレクトリのコンテンツにindex.html
アクセスできないため、ブラウザがまだ空であることがわかります。 .js
assets
したがって、問題は、ファイルとコンテンツを
RedirectMatch 302 ^/(?!index.html$).+ http://mydomain.com
許可するために再構築する必要があることです。.js
assets
後にどの文字列が追加されても、ApacheがAngular 7アプリケーションを正常に提供できるようにするために、この問題を解決するにはどの特定の構文が必要ですか?http://mydomain.com?
ベストアンサー1
RewriteRule
コンテキストでは、次のものを使用できますVirtualHost
。
RewriteEngine On
# if not a regular file
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
# and not a directory
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
# then rewrite to index.html
RewriteRule ^.*$ /index.html [L]
設定を「できるだけきれいに」したい場合は、このようなことを行わずにApacheにHTTP 404を返すようにしてください。