Apache>如何分别重定向主页和其他网址?

时间:2016-04-19 08:47:29

标签: apache mod-rewrite seo url-redirection

我目前正在处理一个特殊配置的网站大修:这2个网站托管在2个不同的服务器上,并为新网站提供新的域名。 新域现在处于联机状态,因此我必须从Apache 2.2.16上运行的旧服务器重定向旧域。

因此,我必须将旧域主页重定向到新的域主页,如下所示:

http://www.oldwebsite.com > http://www.newwebsite.com

与此同时,我必须逐个重新定向旧网址(针对搜索引擎优化的目的,因为新的网址已经过优化),如下所示:

http://www.oldwebsite.com/page1/ > http://www.newwebsite.com/newpage1/
http://www.oldwebsite.com/page2/ > http://www.newwebsite.com/newpage2/
http://www.oldwebsite.com/page3/ > http://www.newwebsite.com/newpage3/
http://www.oldwebsite.com/directory1/ > http://www.newwebsite.com/newdirectory1/
http://www.oldwebsite.com/directory2/ > http://www.newwebsite.com/newdirectory2/
http://www.oldwebsite.com/directory3/ > http://www.newwebsite.com/newdirectory3/
Etc.

因此,我在旧服务器上放入了htaccess文件这些规则:

RewriteRule ^/?$ http://www.newwebsite.com/ [R=301,L]
RewriteRule ^page1$ http://www.newwebsite.com/newpage1/? [R=301,L]
RewriteRule ^page2$ http://www.newwebsite.com/newpage1/? [R=301,L]
RewriteRule ^directory1(.*)$ http://www.newwebsite.com/newdirectory1/? [R=301,L]
RewriteRule ^directory2(.*)$ http://www.newwebsite.com/newdirectory2/? [R=301,L]
RewriteRule ^directory3(.*)$ http://www.newwebsite.com/newdirectory3/? [R=301,L]
Etc.

注意:我添加了“?”在新网址的末尾,以防止旧参数的传输,以避免重复的内容。我听说这是在以前的Apache版本上实现它的方法。

当我这样做时,只有主页被重定向,而其他规则没有被遵循。 所以我通过将第一条规则推到最后来改变规则的顺序,如下所示:

RewriteRule ^page1$ http://www.newwebsite.com/newpage1/? [R=301,L]
RewriteRule ^page2$ http://www.newwebsite.com/newpage1/? [R=301,L]
RewriteRule ^directory1(.*)$ http://www.newwebsite.com/newdirectory1/? [R=301,L]
RewriteRule ^directory2(.*)$ http://www.newwebsite.com/newdirectory2/? [R=301,L]
RewriteRule ^directory3(.*)$ http://www.newwebsite.com/newdirectory3/? [R=301,L]
Etc.
RewriteRule ^/?$ http://www.newwebsite.com/ [R=301,L]

现在结果是,主页仍然被重定向,但其余网址以500错误状态响应。

有人知道我的文件中有什么问题吗? 非常感谢。

1 个答案:

答案 0 :(得分:0)

找到可能解决您的问题的这篇文章

.htaccess 301 redirect path and all child-paths

使用以下代码行:

RewriteRule ^page1$ http://www.newdomain.com/ [R=301,L,QSA]
RewriteRule ^page1/(.*) http://www.newdomain.com/$1 [R=301,L,QSA]