在我们的网站上,我们曾经拥有大量链接,这些链接的末尾有4位数字。他们看起来像这样
www.example.com/example-1234.html.
带有数字的网址已覆盖普通网址,就像
一样 www.example.com/example.html.
我们通过截断core_url_rewrite
表来摆脱它们,这将活动URL与其末尾的数字转换为404。
然而,最近我注意到这些数字已经回来了,我不确定为什么。但是,这次它们也影响了类别URL,因此我们的某些类别URL看起来像:
www.example.com/main-category/sub-category-1234/product.html
我在stackoverflow上发现这篇文章很有用: Magento - Removing numbers in url key/product url。
但是我仍然不明白为什么会这样。我发现函数getUnusedPath
是导致这些数字发生的原因,看起来它只会在URL的末尾创建这些数字
if ($rewrite && $rewrite->getId())
// and $rewrite` is equal to
$rewrite = $this->getResource()->getRewriteByRequestPath($requestPath, $storeId);
你知道我在哪里可以找到什么
getResource()->getRewriteByRequestPath($requestPath, $storeId);
呢? 为什么我们将这些数字显示在URL的末尾? 我们是否启用了设置? (执行此操作的文件位于
app/code/core/Mage/Catalog/Model/Url.php around `line 640`
我尝试了所有不同类型的保存产品,看看当你保存它时magento更新了URL,但这不起作用。然后我尝试重新编制url重写索引,这也没有做任何事情。我们有2个magento网站,在我们的第二个magento网站上没有发生这种情况,core_url_rewrite
表中没有任何带有数字的网址。为什么它发生在我们的某个网站而不是其他网站?我们如何阻止URLS添加数字?我们如何找出它们的生成原因?
我现在也发现,每次重写url时都会发生这种情况,因为每次重新编制索引时脚本都会运行。我们索引
url_rewrites
每次保存产品。我们为所有产品使用唯一的网址,但我不知道为什么会这样。 我还发现,对于要添加到URL末尾的数字,它必须适合此正则表达式查询
#[0-9a-z/-]+?(-([0-9]+))?('.preg_quote($suffix).')?$#i`
(有谁知道这意味着什么?我试图查看一个REGEX计算器,但它无法让我理解哪些字符串适合这个?