301重定向在某些情况下不起作用

时间:2014-02-06 12:19:09

标签: .htaccess mod-rewrite redirect

我对网址结构做了一些更改。这是我的htaccess文件

Redirect 301 /top100 http://www.example.com
Redirect 301 /monthlytop10 http://www.example.com/monthlytop
Redirect 301 /top100/Hardwell http://www.example.com/top100/hardwell
Redirect 301 /top100/Armin%20van%20Buuren http://www.example.com/top100/armin-van-buuren
Redirect 301 /top100/David%20Guetta http://www.example.com/top100/david-guetta

这适用于前两种情况但不适用于其他情况。它会将www.example.com/top100/Armin%20van%20Buuren重定向到www.example.com/Armin%20van%20Buuren

如果我删除了htaccess文件中的第一行,它根本不会重定向并产生404错误。这有什么不对?

1 个答案:

答案 0 :(得分:0)

这是因为Redirect指令不支持正则表达式。请改用RedirectMatch来完全匹配您想要的内容:

RedirectMatch 302 "^/top100/?$" /
RedirectMatch 302 "^/monthlytop10/?$" /monthlytop
RedirectMatch 302 "^/top100/Hardwell/?$" /top100/hardwell
RedirectMatch 302 "^/top100/Armin van Buuren/?$" /top100/armin-van-buuren
RedirectMatch 302 "^/top100/David Guetta/?$" /top100/david-guetta