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。并且,与往常一样,请确保在测试前清除浏览器缓存。