Htaccess重定向内部错误

时间:2016-09-15 13:46:04

标签: apache .htaccess redirect

我需要创建.htaccess重定向,如果用户输入网址www.olddomain.com/bonus,则将其重定向到www.newdomain.com/bonus,将旧域的任何其他网页或根目录重定向到www.newdomain.com

有一段时间我一直在使用这段代码来实现它

RedirectMatch 301 ^/bonus/ http://www.newdomain.com/bonus/ [L]
RedirectMatch 301 ^/ http://www.newdomain.com/ [L]

但是从上周开始它只会导致内部服务器错误。

我已经发现错误是由每行[L]引起的。如果我删除它,我没有收到任何错误,但即使他转到www.newdomain.com,用户也会被重定向到www.olddomain.com/bonus

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

RedirectMatch 301 ^/bonus/ http://www.newdomain.com/bonus/ [L]
RedirectMatch 301 ^/ http://www.newdomain.com/ [L]

这些指令永远不会奏效,所以很难说你为什么突然收到错误。

正如您所建议的那样[L]标志是导致500内部服务器错误的原因。这是无效的语法 - 但这总是是无效的语法!? RedirectMatch是mod_alias指令。然而,尾随标志(例如[L])是mod_rewrite(即RewriteRule)功能。

  

即使他去了www.olddomain.com/bonus

但这些指令也不会重定向上述URL。它只会重定向www.olddomain.com/bonus/ 一个尾部斜杠)。如果需要匹配上面的URL,则需要从指令中删除尾部斜杠。例如:

RedirectMatch 301 ^/bonus http://www.newdomain.com/bonus
RedirectMatch 301 ^/ http://www.newdomain.com/