使用RegExp和Mod Rewrite重定向URL

时间:2017-07-12 21:10:35

标签: .htaccess magento redirect mod-rewrite

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

由于旧产品网址最后有一个随机数,现在他们没有,所以我正在寻找一种方法来重定向它们。

旧网址结构:

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

新网址结构:

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

我知道我可以使用RegExp之类的RewriteRule ^category/subcategories/(.+?)(-[0-9]+)?$ category/subcategories/$1 [L,R=301],但我无法使其正常工作。

1 个答案:

答案 0 :(得分:0)

我说这可能就是你要找的东西:

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样式文件)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。