【问题标题】:Redirecting URLs using RegExp and Mod Rewrite使用 RegEx 和 Mod_rewrite 重定向 URL
【发布时间】:2017-12-17 11:11:16
【问题描述】:

将 Magento 升级到 1.9.3.4 时,它覆盖了 .htaccess 文件,现在我留下了 2000 多个我手动创建的断开链接。

由于旧产品 URL 的末尾有一个随机数,而现在它们没有,所以我正在寻找一种方法来重定向它们。

旧网址结构:

http://example.com/category-1/subcategory/product-name-1421.html
http://example.com/category-2/subcategory/product-name-5421.html
http://example.com/category-3/subcategory/product-name-5891.html

新的 URL 结构:

http://example.com/category-1/subcategory/product-name.html
http://example.com/category-2/subcategory/product-name.html
http://example.com/category-3/subcategory/product-name.html

我知道我可以使用像 RewriteRule ^category/subcategories/(.+?)(-[0-9]+)?$ category/subcategories/$1 [L,R=301] 这样的 RegExp,但我无法让它工作。

【问题讨论】:

  • 为什么不简单地从备份中获取旧的.htaccess 文件?
  • @arkascha 我希望我有一个备份副本。我的那个没有.htaccess 文件。
  • 听到这个消息很难过。但是那发生了......我希望我下面的回答有所帮助;-)

标签: .htaccess magento redirect mod-rewrite


【解决方案1】:

我会说这可能是您正在寻找的:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?category/subcategory/(.+?)-\d+\.html$ /category/subcategory/$1.html [R=301]

为此,您显然需要在您的 http 服务器中激活重写模块。如果您想使用动态配置文件(见下文...),您也需要启用它(见AllowOverride 指令)。


还有一个一般提示:您应该始终喜欢将此类规则放在 http 服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess 样式文件)。众所周知,这些文件容易出错,难以调试,而且它们确实会降低服务器的速度。它们仅在您无法控制主机配置的情况下(阅读:非常便宜的托管服务提供商)或如果您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)提供它们作为最后一个选项)。

【讨论】:

    猜你喜欢
    • 2012-11-12
    • 2023-03-18
    • 2011-04-14
    • 2012-02-22
    • 1970-01-01
    • 2012-05-13
    • 2011-07-24
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多