从 URL 中删除目录
Posted
技术标签:
【中文标题】从 URL 中删除目录【英文标题】:Remove directory from URL with 【发布时间】: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
【参考方案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以上是关于从 URL 中删除目录的主要内容,如果未能解决你的问题,请参考以下文章
如何使用本地主机的 .htaccess 从 URL 中删除目录名称
使用 .htaccess 从 URL 中删除“/php/”子目录
如何使用 htaccess 重写从 url 中删除此目录/文件夹?