2012-01-30 177 views
2

我是一个htaccess noob和atm我想解决一个网站的前任网站管理员留下的混乱。htaccess 301重定向

我有实例,如下面的

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

你可以只使用RedirectMatch两种:

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

在“家”的情况下,正则表达式任意数量的/匹配Home /'s和日历实例中,您只能检查它是否以Calendar.asp或calendar.asp结尾。

+0

再试..对不起 嗨乔恩林 RedirectMatch 301^/(首页/?)+ $ http://www.domain.com/ 工程请客 然而 RedirectMatch 301/[ Cc] alendar \ .asp $ http://www.domain.com/events/ 给出了不同的结果.. 例如calendar.asp?event_id = 87重定向到正确的目录,但它现在保留查询参数例如/ events /?event_id = 87 calendar.asp?month = 1&day = 17&year = 2020&submit = Show + on + the Calendar 如果这个职位看起来一团糟有404个 感谢 率性 索里结束了..不知道如何使它看起来正确的..道歉 – 2012-01-30 12:15:28

+0

只是为了澄清太..我的“再试一次”定向编辑在我自己,..不是你..我第一次尝试回复你,当我意外地击中输入,我不得不删除它.. – 2012-01-30 12:23:34

+0

啊,我明白了,你可以添加**?**在结束时重定向的URL,以便查询字符串不会被追加,所以看起来像这样:'http://www.domain.com/events/?' – 2012-01-30 19:44:38