.htaccess重定向父母而不是孩子?

时间:2014-10-12 00:22:53

标签: apache .htaccess mod-rewrite redirect

我需要将一些网址重定向到新位置,但在某些情况下,子网页需要保持活动状态而不是重定向。例如:

/products会重定向到http://www.newsite.com/products

/products/category1会重定向到http://www.newsite/products/category1

/products/specialitem根本不会被重定向。

是否可以使用Redirect或RedirectMatch?

执行Redirect 301 /products http://www.newsite.com/products似乎会影响所有子页面

感谢任何指导!

修改

使用waynethec的回答,我能够开始使用。但是,任何人都可以澄清为什么我的第一条规则不起作用,但其他规则不起作用?

RedirectMatch 301 ^segment-one$ http://www.google.com/

RedirectMatch 301 ^segment-one/segment-two$ http://news.google.com/

RedirectMatch 301 ^segment-one/segment-two/segment-three$ http://cnn.com/

RedirectMatch 301 ^segment-one/segment-two/segment-three/foobar$ http://gbv.com/

(通过不工作,我的意思是我仍然可以访问页面,而不是重定向。)

3 个答案:

答案 0 :(得分:2)

您应该能够使用以下RedirectMatch规则:

RedirectMatch 301 ^/products$ http://www.newsite.com/products

请注意,这只会重定向/ products,而不是/ products /或/products/pagename.extension的请求。

答案 1 :(得分:0)

您可以使用RedirectMatch

RedirectMatch 301 ^/products(?!/specialitem)(.*)$ http://www.newsite.com/products$1

/products

外,这将重定向/products/specialitem/或其后的任何内容

答案 2 :(得分:0)

如果您需要添加条件,这对我也有用。注意,在使用RewriteRule时,我必须消除^products之间的斜杠。

RewriteCond [...whatever your conditions are...]

# test with 302 first to avoid annoying caching issues
# RewriteRule ^products$  http://www.newsite.com/products [R=302,NC,L]

# but use 301 in production once you know it's working
RewriteRule ^products$  http://www.newsite.com/products [R=301,NC,L]