【问题标题】:My .htaccess redirect is redirecting to wrong urls我的 .htaccess 重定向重定向到错误的网址
【发布时间】:2012-10-31 14:54:44
【问题描述】:

我最近将 wordpress 网上商店转换为 magento 网上商店。现在我希望搜索引擎索引的所有旧网址都重定向到来自 magento 的新网址。 由于它只有大约 150 种产品,我想我会手动完成。

这是我对所有产品都尝试过的:

Redirect 301 /products-page/accu/unibat-ctz5s-bs/ http://www.domain.nl/accu-s/unibat-ctz5s-bs.html

它确实尝试重定向,但最终到达此 URL:http://www.domain.nl/accu-s.htmlunibat-ctz5s-bs/,它给出了 404 :(

有人可以帮我吗?

【问题讨论】:

  • 这是您的 .htaccess 文件中唯一的代码行吗..??这是 domain.nl.. 上唯一的 .htaccess 文件吗??
  • 您好,.htaccess 文件中有很多行。它是一个标准的 magento .htaccess 文件,其中包含大约 150 行这样的额外重定向。

标签: php .htaccess magento


【解决方案1】:

听起来您的 htaccess 末尾的 mod_rewrite 规则干扰了您的 mod_alias 指令(Redirect 语句)。在这种情况下,您需要进行重定向,然后跳出 URL/文件映射管道,并且由于 mod_rewrite 和 mod_alias 都在管道中完成它们的工作,它们都破坏了 URI。只需坚持使用 mod_rewrite,将所有语句更改为:

RewriteRule ^/?products-page/accu/unibat-ctz5s-bs/$ http://www.domain.nl/accu-s/unibat-ctz5s-bs.html [L,R=301]

这些需要您的任何其他规则之前。但也要记住,Redirect 语句的工作方式与使用RewriteRule 重定向的方式相比。 Rewrite 将 2 个 URI 路径节点“链接”在一起。所以像:

Redirect 301 /foo http://www.domain.nl/bar

会将/foo/bar 链接在一起,因此对/foo/blah/blah.html 的请求将重定向到http://www.domain.nl/bar/blah/blah.html。为了将此功能转换为您需要的重写规则:

RewriteRule ^/?foo(.*)$ http://www.domain.nl/bar$1 [L,R=301]

【讨论】:

  • 您好,感谢您的回答!当我使用重写规则时,它可以工作。仅在一种产品上。其余的仍然重定向到错误的 url :(
  • @DavidEricsson 您必须将所有Redirect 语句更改为等效的RewriteRule。关键是 mod_alias 和 mod_rewrite 不能很好地相互配合,所以你不能在重叠的路径中使用 mod_alias 根本
  • 感谢乔恩林!你是我的英雄!
猜你喜欢
  • 2020-09-12
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 2011-02-17
相关资源
最近更新 更多