将根/主页重定向到自定义页面会破坏.htaccess中的所有其他重定向

时间:2014-11-27 12:41:15

标签: apache .htaccess redirect url-redirection

我已将2个网站合并为一个。我为已停用的网站(hkgolf.co.uk)上的所有网页设置了.htaccess重定向,以将其等效内容重定向到其他网站(http://harriskalinka.com)。

这就是我所拥有的以及停用网站上的.htaccess:

Redirect 301 / http://harriskalinka.com/
Redirect 301 /work/ http://harriskalinka.com/work/
Redirect 301 /projects_tag/academy/ http://harriskalinka.com/work/
Redirect 301 /projects_tag/asia/ http://harriskalinka.com/work/

我喜欢做的是将访问旧网站主页的访问者重定向到新网站上的页面,告诉他们为何重定向以及所有其他重定向工作正常。所以我这样做了:

Redirect 301 / http://harriskalinka.com/home/hk-golf-redirect/
Redirect 301 /work/ http://harriskalinka.com/work/
Redirect 301 /projects_tag/academy/ http://harriskalinka.com/work/
Redirect 301 /projects_tag/asia/ http://harriskalinka.com/work/

现在发生的事情是,如果你去旧网站主页(hkgolf.co.uk/),你被重定向到http://harriskalinka.com/home/hk-golf-redirect/(我想要的)

问题是,如果你需要hkgolf.co.uk/work/,你会被发送到http://harriskalinka.com/home/hk-golf-redirect/work/而不是http://harriskalinka.com/work/

为什么会这样?

1 个答案:

答案 0 :(得分:1)

重新排列规则以保留通用规则(catch-all):

Redirect 301 /work/ http://harriskalinka.com/work/
Redirect 301 /projects_tag/academy/ http://harriskalinka.com/work/
Redirect 301 /projects_tag/asia/ http://harriskalinka.com/work/
Redirect 301 / http://harriskalinka.com/home/hk-golf-redirect/

或者,您可以使用RedirectMatch来获得正则表达式功能:

RedirectMatch 301 ^/work/?$ http://harriskalinka.com/work/
RedirectMatch 301 ^/projects_tag/academy/?$ http://harriskalinka.com/work/
RedirectMatch 301 ^/projects_tag/asia/?$ http://harriskalinka.com/work/
RedirectMatch 301 ^/?$ http://harriskalinka.com/home/hk-golf-redirect/