【发布时间】:2016-08-11 07:50:20
【问题描述】:
我目前正在处理一个特殊配置的网站大修:这 2 个网站托管在 2 台不同的服务器上,并为新的服务器使用了新域名。 新域现在在线,所以我必须从在 Apache 2.2.16 上运行的旧服务器重定向旧域。
因此,我必须像这样将旧域主页重定向到新域主页:
http://www.oldwebsite.com > http://www.newwebsite.com
同时我必须像这样分别重定向旧网址(出于 SEO 目的,因为新域网址已优化):
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]
因此,主页仍然被重定向,但其余 url 响应为 500 错误状态。
有人知道我的文件有什么问题吗? 非常感谢。
【问题讨论】:
标签: apache mod-rewrite seo url-redirection