Apache 重定向到其他页面但不起作用

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

像这样。

它是带有 apache web 服务器的 tomcat 上的 Jenkins。任何帮助都将不胜感激。

答案1

redirect / http://example.com/jenkins

如果重定向到同一主机,那么这确实会导致重定向循环,因为该Redirect指令使用简单的前缀匹配,匹配后的所有内容都会复制到目标 URL 的末尾。因此,您将得到以下内容:

  • /(初始请求)
  • /jenkins(第一次重定向)
  • /jenkinsjenkins(第二次重定向)
  • ETC。

您需要使用RedirectMatch指令,以便仅匹配文档根目录。RedirectMatch(也是 mod_alias 的一部分)使用正则表达式进行匹配,而不是前缀匹配。例如:

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

我已经包括了选修的状态代码参数来明确表明这是一个 302(临时)重定向(默认)。

对服务器配置进行任何更改后,您需要重新启动 Apache。并且,与往常一样,请确保在测试前清除浏览器缓存。

相关内容