2012-12-28 58 views
6

這是我的htaccess:htaccess重寫前重寫規則?

## Rewrites 
<IfModule mod_rewrite.c> 
    RewriteEngine On 

    Redirect /stream/ http://twitch.tv/8wayrun 
    Redirect /stream http://twitch.tv/8wayrun 

    RewriteCond %{HTTP_HOST} ^(www\.)?8wayrun\.com$ 
    RewriteRule ^(.*)$ http://8wayrun.com/calibur/$1 [R=302,L] 
</IfModule> 

基本上,我需要重寫8wayrun.com/stream到twitch.tv/8wayrun ...

然後我需要它來重寫8wayrun.com到8wayrun.com/calibur ...

問題是,它將8wayrun.com/stream重寫爲8wayrun.com/calibur/stream。我該如何解決?

+0

嘗試將標誌L置於前兩個重定向之後。 –

+0

你的意思是像'重定向/流/ http://twitch.tv/8wayrun [L] 重定向/流http://twitch.tv/8wayrun [L]'?試過了,給我服務器錯誤。 –

回答

7

Redirect指令是mod_alias的一部分,而Rewrite*指令是mod_rewrite的一部分。當通過URL /文件映射管道處理一個URI時,兩個模塊都會得到應用,所以兩個模塊之間並不重要,兩者都將最終得到應用。

你最好堅持只使用mod_rewrite並使用L標誌來防止應用的額外重定向。

## Rewrites 
<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteRule ^/?stream/? http://twitch.tv/8wayrun [R=302,L] 

    RewriteCond %{HTTP_HOST} ^(www\.)?8wayrun\.com$ 
    RewriteRule ^(.*)$ http://8wayrun.com/calibur/$1 [R=302,L] 
</IfModule>