2012-02-03 102 views
1

我有以下代碼,似乎工作的唯一重定向是第一個。我在其他重定向上收到500個錯誤。任何見解都非常感謝。連續多個RewriteCond將子域重定向到新子域

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{HTTP_HOST} ^test1.domain.com 
    RewriteRule (.*) http://s.domain.com/sub1/$1 [L] 

    RewriteCond %{HTTP_HOST} ^test2.domain.com 
    RewriteRule (.*) http://s.domain.com/sub2/$1 [L] 

    RewriteCond %{HTTP_HOST} ^test3.domain.com 
    RewriteRule (.*) http://s.domain.com/sub3/$1 [L] 
</IfModule>   
+0

嘗試啓用RewriteLog,看看是什麼原因造成的錯誤http://stackoverflow.com/questions/7746769/log-of-apache-rewrites – 2012-02-03 01:21:52

+1

我建議增加一個R標誌。所以'[L]'將變成'[L,R]'。 – Gerben 2012-02-03 12:20:53

+0

@Gerben做的伎倆。謝謝! – jeffreynolte 2012-02-03 16:46:21

回答

2

試試這個:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{HTTP_HOST} ^test(1|2|3)\.domain\.com$ [NC] 
    RewriteRule ^(.*)$ http://s.domain.com/sub%1/$1 [L,R] 

</IfModule> 
+1

你甚至可以使用'([0-9] +)'而不是'(1 | 2 | 3)'來匹配任何數字。 – Gerben 2012-02-03 12:20:19

+0

@Gerben是的我可以使用'([0-9])'或'(\ d)',但正如問題中提到的,它看起來像只有'1','2','3'用於子域。因此'(1 | 2 | 3)'。 – ThinkingMonkey 2012-02-03 12:29:30

+0

感謝ThinkingMonkey這似乎工作得很好,但我只是使用@Gerben解決方案。 – jeffreynolte 2012-02-03 16:47:40