我是一个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]
但是......我怀疑我对此的尝试会被认为是最佳的,并且想知道应该如何做,而不是我和我有限的知识一起黑客攻击。
任何帮助表示赞赏
由于 率性
答案 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结尾。