【问题标题】:.htaccess multiple rewrite conditions and rules.htaccess 多个重写条件和规则
【发布时间】:2013-12-24 05:51:29
【问题描述】:

我正在尝试在一个 .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/ 第一次重写工作正常,其他两个不行。

感谢您的帮助

【问题讨论】:

    标签: regex .htaccess mod-rewrite


    【解决方案1】:

    这是由于错误的正则表达式,即(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]
    

    【讨论】:

      猜你喜欢
      • 2013-04-24
      • 2016-08-13
      • 2011-10-02
      • 2015-02-15
      • 2017-11-21
      • 2013-06-29
      • 1970-01-01
      相关资源
      最近更新 更多