我正在尝试在一个.htaccess文件中解决多个重写规则和条件。
该文件如下所示:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(jira.)?mydomain.com$
RewriteRule (.*) http://jira.mydomain.com:8080/jira/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(confluence.)?mydomain.com$
RewriteRule (.*) confluence.mydomain.com:8099$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(stash.)?mydomain.com$
RewriteRule (.*) stash.mydomain.com:7990/stash$1 [R=301,L]
所以进入域名jira.mydomain.com将我转发给jira.mydomain.com:8080/jira/ 第一次重写很好,其他两次没有。
感谢您的帮助
答案 0 :(得分:2)
这是由于错误的正则表达式(jira.)?
,(stash.)?
等导致jira.
可选,因此您的第一个规则始终匹配。
试试这段代码:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^jira\.mydomain\.com$ [NC]
RewriteRule (.*) http://jira.mydomain.com:8080/jira/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^confluence\.mydomain\.com$ [NC]
RewriteRule (.*) http://confluence.mydomain.com:8099/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^stash\.mydomain\.com$ [NC]
RewriteRule (.*) http://stash.mydomain.com:7990/stash/$1 [R=301,L]