ルート以外のすべてのパスをAmazon Linux 2およびApacheのindex.htmlにリダイレクトする

ルート以外のすべてのパスをAmazon Linux 2およびApacheのindex.htmlにリダイレクトする

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.htmlmydomain.comindex.htmlindex.html.jsassets

(この場合は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.comVirtualHost/304302

htmlまた、同じリクエストのページソースを見ると、コンテンツがindex.html実際に正しく提供されていますが、コードがファイルまたはサブディレクトリのコンテンツにindex.htmlアクセスできないため、ブラウザがまだ空であることがわかります。 .jsassets

したがって、問題は、ファイルとコンテンツをRedirectMatch 302 ^/(?!index.html$).+ http://mydomain.com許可するために再構築する必要があることです。 .jsassets後にどの文字列が追加されても、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を返すようにしてください。

おすすめ記事