【问题标题】:Redirecting a page to the same page under a different domain将页面重定向到不同域下的同一页面
【发布时间】:2015-10-22 12:21:03
【问题描述】:

我正在更改域名,并想设置这样的结构:

如果用户访问www.olddomain.com/page,他将被重定向到www.newdomain.com/page等。换句话说,只有域的前斜杠部分会改变。我想对旧域下的所有页面执行此操作。

有谁知道我该如何配置这个?

【问题讨论】:

  • 我可以用 PHP 做到这一点 - 我不确定你是否可以直接用 apache 做到这一点,除非两个域都托管在同一台服务器上,在这种情况下,请查看 rewrite
  • 你会如何用 PHP 来做呢?
  • 我认为下面 Jon Lin 发布的解决方案更有说服力(虽然我自己还没有尝试过) - 如果您仍然想要我的 PHP 解决方案,请告诉我,我会清理代码并发布它 - 它基本上涉及将旧站点上的所有页面重定向到 index.php,然后通过简单地将第一个 / 之前的路径部分替换为您的新域来发出标题(“位置:”)。

标签: .htaccess url redirect


【解决方案1】:

可以通过多种方式在您的旧域文档根目录中的 htaccess 文件中进行此操作。如果新旧域在不同的服务器上,或者至少是不同的文档根目录,那么你可以简单地使用 mod_alias 的重定向:

Redirect 301 / http://www.newdomain.com/

如果您对在域之间共享文件夹感到困惑,或者它们位于同一个文档根目录中,则需要检查 HTTP HOST 字段并使用 mod_rewrite:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]

【讨论】:

  • 看起来不错。如果我需要它从 olddomain.com/pagenewdomain.com/page 怎么办?
  • @JohnRoberts 第一个 mod_alias 指令自动包含新域中斜杠之后的所有内容,第二个 mod_rewrite 规则使用 $1 反向引用请求。所以无论/ 被包含在两个实例中
  • 不,我的意思是,如果我不想要前面的“www”怎么办?
  • @JohnRoberts 然后将其从规则中删除
  • 我发现这仅适用于将 olddomain.com 重定向到 newdomain.com,但不适用于将 olddomain.com/page 重定向到 newdomain.com/page。两个网站都使用 WordPress——这可能与它为什么不起作用有关吗?
猜你喜欢
  • 1970-01-01
  • 2018-04-09
  • 2014-09-23
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 2011-06-26
相关资源
最近更新 更多