我们遇到了一个问题,即我们正在开发的 Magento 商店上存在不需要的永久重定向,我正在寻找如何从这些重定向的空白开始。我们不需要任何内容,因为它是一个正在开发的网站,而且我们也不希望任何内容在此域内重定向。商店没有直播,以下是发生的事情。
我们不知道“系统”->“配置”->“目录”->“SEO”下的 URL 重写管理选项,因此将“创建永久重定向...”标记为“是”。有些产品是通过 Feed 上传的,但是它们上传不正确。因此,我们重新上传它们以进行覆盖。结果是,“White Shirt A”在管理或导出的数据源中的 URL 键为“white-shirt-a.html”,但打开该产品的实际链接是“white-shirt-a-1”。 html。”如果我们访问“white-shirt-a.html”,它会给我们一个 404 Not Found。
我们如何清除所有这些永久重定向?我们尝试在目录 -> URL 重写管理下禁用或删除这些特定的请求路径和目标路径条目,但它们没有任何效果。
如果您的商店尚未上线,请按照以下步骤操作:
从数据库中清空/截断
core_url_rewrite
表。禁用 Magento 后端的永久重定向。
重新索引目录 URL 重写,您的所有 URL 都将被更正。
要删除所有永久重定向,您可以:
1)执行直接查询(不推荐):
DELETE FROM core_url_rewrite WHERE options IS NOT NULL AND is_system = 0
2)动作要轻柔一些:
$write = Mage::getSingleton('core/resource')->getConnection('core_write');
try {
$write->beginTransaction();
$table = Mage::getSingleton('core/resource')->getTableName('core/url_rewrite');
$count = $write->exec('DELETE FROM ' . $table . ' WHERE options IS NOT NULL AND is_system = 0');
$write->commit();
$this->_getSession()->addSuccess($this->__('Successfully removed %s redirects.', $count));
} catch(Exception $e) {
$write->rollback();
$this->_getSession()->addException($this->__("An error occurred while clearing url redirects: %s", $e->getMessage()));
}
3)或者您可以安装自定义产品网址扩展,使您能够从管理面板清除所有永久重定向。
我不保证这是安全的。但到目前为止似乎已经奏效了。
我已经运行了这个查询:
“从
core_url_rewrite
删除*,其中is_system
!= 1”;
该查询删除了所有 custom 重写规则,其中我们有大约 500,000 个。其中大多数是当有人在搜索引擎优化中关闭“.html”扩展名而没有将“URL 更改时创建重写规则”更改为“否”时创建的。
在 Magento 2 上,该表现在命名为
url_rewrite
。 此外,还有一个名为 catalog_url_rewrite_product_category
的表,可能有一些记录指向 url_rewrite
表。
url_rewrite
表有一列名为 redirect_type
。 此列在行中设置为 301
,以指示永久重定向到 target_path
列。
首先,迁移
catalog_url_rewrite_product_category.url_rewrite_id
。 下面将为您提供要迁移的 id 列表。
SELECT f.url_rewrite_id AS 'from id', t.url_rewrite_id AS 'to id'
FROM url_rewrite f
JOIN url_rewrite t ON f.target_path = t.request_path
WHERE f.redirect_type = '301';
然后你可以(鲁莽地)继续
DELETE FROM url_rewrite WHERE redirect_type = '301';