【问题标题】:Remove directory from URL with从 URL 中删除目录
【发布时间】:2013-09-11 04:38:49
【问题描述】:

我正在将 Magento 站点从 example.com/shopping 移动到 example.com,并且我必须 301 将所有 URL 重定向到新位置 (example.com)。我假设我可以在 .htaccess 文件中使用 mod_rewrite 来创建重写规则来执行此操作?我尝试学习如何使用 mod_rewrite,但语法对我来说太复杂了。

有数百个页面需要重定向。示例:

http://www.example.com/shopping/product-category-1/product-sub-category.html

http://www.example.com/product-category-1/product-sub-category.html

这是为了让人们在通过旧网址进入网站时不会遇到 404 错误。

【问题讨论】:

  • 我实际上将不得不在几个小时内做同样的事情,我的谷歌查询将类似于.htaccess redirect single page。它出现了很好的例子,比如.htaccess 301 redirect of single page

标签: .htaccess magento redirect mod-rewrite


【解决方案1】:

尝试将其添加到文档根目录中的 htaccess 文件中,最好高于您可能已经拥有的任何规则:

RewriteEngine On
RewriteRule ^shopping/(.*)$ /$1 [L]

如果您想重定向浏览器以使新 URL 出现在地址栏中,请在方括号中添加 R 标志:

RewriteEngine On
RewriteRule ^shopping/(.*)$ /$1 [L,R=301]

【讨论】:

  • 好的,这是很好的建议,谢谢。我的下一个问题是:这会干扰默认 Magento .htaccess 文件的任何其他方面吗?
  • @pbujok 如果 magento 期望 URL 中有一个 /shopping/ 路径,它会,但这真的取决于你如何设置它
  • [L] 部分是否会阻止运行 Magento 功能所需的其他重写?只包含 R=301 并让其余的重写运行会更好吗?
  • @pbujok 重写引擎循环,因此在应用该规则后,新的 URI(将是一个没有 /shopping/ 的)将再次通过所有规则。 L 只是在当前迭代中停止重写。
  • 但是要访问管理员,我不能像之前那样使用 mysite.com/admin。现在我需要输入 mysite.com/index.php/admin
猜你喜欢
  • 1970-01-01
  • 2019-04-06
  • 2011-09-24
  • 2012-03-19
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多