web-dev-qa-db-ja.com

Apacheが他のページにリダイレクトしているが、機能していない

以下の行を含む仮想ホスト名example.confがあります。

<VirtualHost *:80>
ServerName example.com
ServerAdmin [email protected]

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog /var/log/httpd/app1_access.log combined
ErrorLog /var/log/httpd/app1_error.log

redirect / http://example.com/jenkins
DirectoryIndex index.html index.php
JkMount /jenkins/* failover
JkMount /jenkins failover

</VirtualHost>

誰かがhttp://example.comを押すと、http://example.com/jenkinsが開くはずです。

私のURLはにリダイレクトされています

http://example.com/jenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkins

このような。

これは、ApacheWebサーバーを備えたTomcat上のJenkinsです。どんな助けでも大歓迎です。

1
user2916639
redirect / http://example.com/jenkins

同じホストにリダイレクトする場合、Redirectディレクティブは単純なプレフィックス照合を使用し、照合後のすべてがターゲットURLの末尾にコピーされるため、これは実際にリダイレクトループになります。したがって、次のようになります。

  • /(最初のリクエスト)
  • /jenkins(最初のリダイレクト)
  • /jenkinsjenkins(2番目のリダイレクト)
  • 等.

代わりにRedirectMatchディレクティブを使用して、ドキュメントルートのみを照合できるようにする必要があります。 RedirectMatch(これもmod_aliasの一部)は、プレフィックス一致の代わりに正規表現を使用して一致します。例えば:

RedirectMatch 302 ^/$ http://example.com/jenkins

これが302(一時的)リダイレクト(デフォルト)であることを明確にするために、オプションステータスコード引数を含めました。

サーバー構成に変更を加えた後、Apacheを再起動する必要があります。また、いつものように、テストする前にブラウザのキャッシュをクリアしたことを確認してください。

1
MrWhite