Назад | Перейти на главную страницу

Apache перенаправляет на другую страницу, но не работает

У меня есть имя vhost example.conf который содержит строки ниже.

<VirtualHost *:80>
ServerName example.com
ServerAdmin admin@myhost.com

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

Как это.

Это Jenkins на tomcat с веб-сервером apache. Любая помощь приветствуется.

redirect / http://example.com/jenkins

Если перенаправление на тот же хост, то это действительно приведет к циклу перенаправления, потому что Redirect Директива использует простое сопоставление префиксов, и все, что находится после совпадения, копируется в конец целевого URL. Итак, вы получите следующее:

  • / (Первоначальный запрос)
  • /jenkins (первое перенаправление)
  • /jenkinsjenkins (второе перенаправление)
  • и т.п.

Вам нужно использовать RedirectMatch вместо этого, чтобы вы могли сопоставить только корень документа. RedirectMatch (также является частью mod_alias) сопоставления с использованием регулярного выражения вместо сопоставления префиксов. Например:

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

Я включил по желанию Аргумент кода состояния, чтобы прояснить, что это 302 (временное) перенаправление (по умолчанию).

Вам нужно будет перезапустить Apache после внесения любых изменений в конфигурацию сервера. И, как всегда, перед тестированием убедитесь, что вы очистили кеш браузера.