【问题标题】:Apache > How to redirect the home page and others urls separately?Apache > 如何分别重定向主页和其他 url?
【发布时间】: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


    【解决方案1】:

    发现这篇文章可以解决你的问题

    .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]
    

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 2021-04-09
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多