Apache 2.4およびCentOS 7で未処理のパスを/にリダイレクトする

Apache 2.4およびCentOS 7で未処理のパスを/にリダイレクトする

CentOS 7サーバーは、で公開フロントエンドWebサイトをホストし、example.comからバックエンドAPIをホストしますhome.example.com。以下のレコードは、VirtualHostリクエストをフロントエンドに正常に転送し、リクエストをexample.comバックエンドに転送しますhome.example.com。ただし、パスの要求に対する要求はエラーを example.com引き起こします。404

リクエストをexample.comにリダイレクトするVirtualHostには、以下の設定で具体的にどのような変更が必要ですか?example.com/anyPath get

たとえば、リクエストhttp://example.com/homeサーバーに到達するために返す必要があります。example.com

ここにいるVirtualHost

<VirtualHost www.example.com:80>
    ServerName www.example.com
    ServerAlias example.com
    ErrorLog /var/log/httpd/example_com_error.log
    CustomLog /var/log/httpd/example_com_requests.log combined
    DocumentRoot /var/www/example/public_html
</VirtualHost>

<VirtualHost home.example.com:80>
    ServerName home.example.com
    ErrorLog /var/log/httpd/example_home_com_error.log
    CustomLog /var/log/httpd/example_home_com_requests.log combined
    ProxyPass / http://public.ip.for.api:1234/ connectiontimeout=5 timeout=30
</VirtualHost>

ベストアンサー1

リダイレクトするには、最初のVirtualHostディレクティブ(適切なインデックスファイルを含む)に追加します。

RedirectMatch 302 ^/(?!index.html$).+ http://example.com

デフォルトでは、これは/index.htmlと正確に一致せず、後に1つ以上の文字が続くすべてのエントリと一致することを意味します。

Rewriteこれを使用してさまざまな効果を得ることもできます。 Apacheは、要求された内容に関係なくインデックスファイルを提供します。

RewriteEngine on
RewriteRule ^/.* index.html

おすすめ記事