htaccess在重写规则之前重定向?

时间:2012-12-28 19:09:43

标签: .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。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:9)

Redirect指令是mod_alias的一部分,Rewrite*指令是mod_rewrite的一部分。当通过URL /文件映射管道处理URI时,两个模块都被应用,因此将一个模块放在另一个模块前面并不重要,两者都将最终应用。

最好只使用mod_rewrite并使用L标志来防止应用geting的额外重定向。

## 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>