将某些页面重定向到其他域中的等效页面,否则重定向到其主页

时间:2015-06-17 00:11:05

标签: apache .htaccess rewrite url-redirection

我想使用htaccess将某些页面重定向到另一个域中的等效页面,其他页面重定向到主页。

就像那样:

  • http://old-domain.com/certain-page重定向到:http://new-domain.com/certain-page
  • http://old-domain.com/another-certain-page重定向到:http://new-domain.com/another-certain-page

只会重定向这些网页,否则必须将网页重定向到新域主页

  • http://old-domain.com/non-certain-page重定向到:http://new-domain.com

这是我的尝试:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^certain-page$ http://new-domain.com/certain-page [R=301,L]
RewriteRule ^another-certain-page$ http://new-domain.com/another-certain-page [R=301,L]
</IfModule>

但不知道如何排除其他网页。

这里有任何帮助吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

我不确定你的意思

  

但不知道如何排除其他页面

但是,当您为它们创建特定规则时,您已经排除了这些页面。这应该工作。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#redirect specific pages
RewriteRule ^certain-page$ http://new-domain.com/certain-page [R=301,L]
RewriteRule ^another-certain-page$ http://new-domain.com/another-certain-page [R=301,L]

#Redirect everything else to homepage
RewriteRule ^(.*)$ http://new-domain.com/ [R=301,L]
</IfModule>

让我知道这对你有什么用。如果您在尝试这些新规则之前需要清除缓存。

答案 1 :(得分:0)

提到了另一个答案here,感谢anubhava

使用redirect而无需使用Rewrite

RedirectMatch 301 ^/.+ http://www.newdomain.com/

所以,答案也可以是:

#Redirect specific pages
redirect 301 /certain-page http://new-domain.com/certain-page
redirect 301 /another-certain-page http://new-domain.com/another-certain-page

#Redirect everything else to homepage
RedirectMatch 301 ^/.+ http://new-domain.com