【问题标题】:Redirect deep link URLs to new domain with htaccess使用 htaccess 将深层链接 URL 重定向到新域
【发布时间】:2012-09-17 11:02:37
【问题描述】:

例如,假设您当前托管了一个网站 www.domain.com,并且您打算将其移至 www.new-domain.com。现在,目前您的博客结构是 www.domain.com/2012/09/post-name,而您的新博客结构将是 www.new-domain.com/blog/post-name。我知道我可以在 domain.com 上执行 301 永久重定向以指向 new-domain.com,但是有没有办法捕获长尾 URL 并使用 htaccess 重写正则表达式。通常我会这样做:

RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/(.*)$ http://domain.com/blog/$3

如果我需要更改同一域中的 URL 结构。这是否也会从旧域中捕获重定向?

【问题讨论】:

  • 你能不能只做:RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
  • 你能扩展一下你对这个的思考过程吗?
  • 如果我的理解是正确的,您想将所有链接(甚至是非常深的链接)重定向到另一个网站,但又不想写出长篇大论的麻烦?还是我错了?
  • 重读后我觉得我错了。 :-P

标签: regex .htaccess url redirect


【解决方案1】:

我假设您的两个域都指向同一个目录,否则询问来自旧域的重定向没有任何意义。

如果您在新域文档根目录上获得了重定向,您将永远不会看到来自旧域的请求,反之亦然。

如果两个域共享同一个文档根目录,您需要对主机进行检查:

RewriteEngine On
RewriteCond %{HTTP_HOST} domain.com$ [NC]
RewriteRule ^/?[0-9]{4}/[0-9]{2}/(.*)$ http://new-domain.com/blog/$1 [L,R=301]

【讨论】:

  • 这些域托管在具有完全不同 DNS 区域的不同服务器上。我的问题是这是否可能。让 domain.com/year/day/postname 重定向到 new-domain.com/blog/postname 而无需手动重定向每篇文章,进行某种 dns 重定向,然后使用正则表达式来捕捉尾巴……你是对的这可能没有意义,这就是我问的原因。
  • @RobBennet 你有什么可以解决问题,或者在这个答案中使用 mod_rewrite 解决方案。
猜你喜欢
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多