htaccess 301重定向

时间:2012-01-30 02:52:47

标签: .htaccess redirect

我是一个htaccess noob而且我正试图解决网站上一位网站管理员留下的一团糟。

我有以下实例

http://www.domain.com/Home
http://www.domain.com/Home/
http://www.domain.com/Home/Home
http://www.domain.com/Home/Home/
http://www.domain.com/Home/Home/Home
http://www.domain.com/Home/Home/Home/

所有需要301重定向到http://www.domain.com/

以下作品

RewriteCond %{HTTP_HOST} ^.*$

RewriteRule ^((?=.*[A-Z])(?=.*[a-z]).{4,15}|(?=.*[A-Z])(?=.*[a-z]).{3,15}\/)$ "http\:\/\/www\.domain\.com\/" [R=301,L]

然后我还有以下实例:

http://www.domain.com/calendar.asp
http://www.domain.com/Calendar.asp
http://www.domain.com/calendar.asp?foo=123&bar=456&foobar=123456
http://www.domain.com/Home/calendar.asp?foo=123&bar=456&foobar=123456
http://www.domain.com/Home/Home/Home/Calendar.asp
http://www.domain.com/Home/Home/calendar.asp
http://www.domain.com/Home/Home/Home/calendar.asp?foo=123&bar=456&foobar=123456

等等

所有需要301重定向到http://www.domain.com/events/

以下两项工作用于处理多种变体中的日历页面问题......

RewriteCond %{HTTP_HOST} ^.*$

RewriteRule ^calendar\.asp$ "http\:\/\/www\.domain\.com\/events\/?" [R=301,NC,L]


RewriteCond %{HTTP_HOST} ^.*$

RewriteRule ^((?=.*[A-Z])(?=.*[a-z]).{4,50})\/[cC]alendar\.asp$ "http\:\/\/www\.domain\.com\/events\/?" [R=301,L]
但是......我怀疑我对此的尝试会被认为是最佳的,并且想知道应该如何做,而不是我和我有限的知识一起黑客攻击。

任何帮助表示赞赏

由于 率性

1 个答案:

答案 0 :(得分:0)

你可以只使用RedirectMatch

RedirectMatch 301 ^/(Home/?)+$ http://www.domain.com/
RedirectMatch 301 /[Cc]alendar\.asp$ http://www.domain.com/events/

在“Home”的实例中,正则表达式匹配任意数量的/ Home /,并且在日历的实例中,您只是检查它是否以Calendar.asp或calendar.asp结尾。