Я заметил большое количество сообщений о том, что эта таблица сама по себе может быть чрезвычайно загромождена, я работаю на сайте с ~ 5000 SKU и ~ 250 категориями (одно хранилище) и результирующей core_url_rewrite
таблицей размером более 600 000 строк и размером более 500 МБ, которые безумен
Это может замедлить работу сайта и привести к очень громоздкой базе данных. Я немного покопался и нашел немало постов по этому поводу, особенно:
Ошибка Core_url_rewrite: огромное количество повторяющихся URL для каждого продукта, сгенерированного в индексеMagento Commerce - отслеживание ошибок - выпуск № 29020
// Эти ссылки были удалены с момента внедрения новых плат
Теперь я понимаю, что таблицу можно обрезать и переиндексировать, но это не решает проблему, а только продлевает повторение проблемы.
Из того, что я понимаю, часть проблемы - это продукты, которые имеют одинаковый URL-ключ в зависимости от названия продукта, что приводит к индексированным ссылкам.
Упомянутое исправление:
app/code/core/Mage/Catalog/Model/Url.php
по строке ~ 807:
Изменить:
if ($product->getUrlKey() == '' && !empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
Для того, чтобы:
if (!empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
Но даже это не полностью решает проблему.
Мой вопрос заключается в следующем:
Если у вас возникла эта проблема, удалось ли вам создать эффективный, логичный и действенный алгоритм, который не предполагает повторного «управления» проблемой, а фактически решает проблему раз и навсегда?
Был бы очень признателен за понимание этого.
КСТАТИ: Пожалуйста, сделайте себе одолжение и проверьте, как выглядит ваш стол прямо сейчас, вы можете испытывать эту проблему и влияние на производительность в результате, даже не зная об этом - я не знал.
Изменить: я связывался с www.Nexcess.net (платиновый партнер Magento), и они подтвердили, что у них есть запрос клиентов, что их core_url_rewrite
таблица требует усечения из-за слишком громоздкого.
Мое большое беспокойство вызывает то влияние, которое это может оказать на SEO, поэтому я хотел бы найти решение, а не откладывать повторное возникновение проблемы.
Обновление: Nexcess упомянул, что с дублирующимися продуктами в таблице это может фактически навредить SEO, как оно есть.
источник
Ответы:
Мне удалось стабилизировать проблему следующим образом:
Шаг 1: Перепишите модель URL каталога (используя собственный модуль: как сделать )
Согласно решению Янни на
доски MagentoCommerce(больше не активен с новой доской),app/code/core/Mage/Catalog/Model/Url.php
[около строки 807Mage_Catalog_Model_Url::getProductRequestPath()
]Из:
Для того, чтобы:
Шаг 2: усечь
Усекать
core_url_rewrite
таблицуШаг 3: переиндексация и очистка кешей
Инициируйте процесс повторной индексации при перезаписи ядра URL. После этого вы захотите очистить кеш и хранилище Magento.
System
→Cache Management
→Flush Magento Cache
System
→Cache Management
→Flush Cache Storage
Вуаля, все готово. Вы заметите, что если вы повторно запустите индексатор, таблица должна оставаться постоянной по размеру (если вы не добавили больше промежуточных продуктов или если у вас есть повторяющиеся имена категорий).
источник
core_url_rewrite
сейчас на таблицу и запишите количество записей. Снова выполните шаг 3 (переиндексация) и обновите представлениеcore_url_rewrite
таблицы. Если число совпадает, вы успешно решили. Затем продолжайте и вручную объединяйте ваши пользовательские изменения. Всего наилучшего.Хотя я надеюсь, что кто-то здесь придет с ответом, я не знаю, найдете ли вы его. Эта таблица становится громоздкой по разным причинам. Ошибки в более ранних (и, возможно, текущих) версиях Magento - одна. Другая причина заключается в том, что в этой таблице есть логика, которая пытается отследить изменения значения ключа URL, чтобы 301/302 переписывания были настроены для старых продуктов. Из-за этого и усложнения вещей усечение таблицы и восстановление могут привести к тому, что существующие перезаписи URL исчезнут, и это окажет неизвестное влияние на список поисковых систем (не обязательно плохо, просто трудно предсказать).
Мой общий совет для клиентов, которые спрашивают
Оставьте гигантскую растущую таблицу такой, как есть, если вы плохо разбираетесь в ситуации с URL / SEO
Пока размер таблицы не станет проблемой (например, создание карт сайта). Когда это произойдет, выясните ситуацию с URL / SEO.
После того, как вы разберетесь с ситуацией URL / SEO, сделайте резервную копию таблицы, затем обрежьте таблицу и восстановите ее. Решите любые проблемы URL / SEO, вызванные усечением.
Автоматизировать шаг 3
Попытка исправить это на уровне кода Magento замечательна, но вы будете плыть вверх по течению. Иногда лучше принять, что «Это просто Magento, будучи Magento», и решить проблему с внешним процессом.
источник
Я хотел бы добавить исправление для этой ошибки индексатора перезаписи URL, которая была разработана на bugathon в марте 2013 года и которая впоследствии была улучшена. Это должно решить эту проблему. В качестве ссылки вот файл патча по ссылке:
Кроме того, я хотел бы добавить патч EE
PATCH_SUPEE-389_EE_1.12.0.2_v2.sh
, который теперь доступен на GitHub :Если вы хотите использовать этот патч с CE, обязательно протестируйте его правильно, потому что он был разработан для EE.
источник
После того, как вы применили патч, опубликованный Саймоном, вы можете использовать следующий запрос для удаления ненужных данных:
В отличие от запроса Ашиша Хира, это влияет только на те URL-адреса, которые имеют целое число, как и в последней части - это было - в моем случае - причиной беспорядка.
Он пытается не трогать действительные изменения, которые, например, могли быть созданы при обновлении ключа URL.
источник
Я успешно реализовал принятый ответ. При другой установке Magento мне нужно было сохранить некоторые пользовательские изменения, поэтому я удалил все записи, оканчивающиеся на -, а затем число длиной до 5 цифр с:
В основном это работало, но я все еще получаю еще 2 строки на каждый переиндекс. Не уверен почему. Я думал, что поделюсь этим опытом.
источник
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('url_key', array('regexp' => '[0-9]$'));
Основные изменения, о которых вы упомянули, кажутся необходимыми только в том случае, если у вас есть продукты без url_keys, однако Magento всегда должен создавать для вас url_keys. Если у вас есть какой-то импортер, который создает продукты без url_keys, то эта проблема возникнет для этих продуктов. Попробуйте выполнить следующий запрос, чтобы найти такие продукты:
Если какие-либо продукты возвращаются из этого запроса, они не имеют url_key и будут проблемой.
источник
entity_type_id
для продуктов 4, а не 10.Я следовал утвержденному решению, чтобы предотвратить повторные перезаписи URL, а затем экспортировал
core_url_rewrite
как файл CSV. Был в состоянии открыть этот CSV и удалить все, кроме созданных вручную перезаписей URL.Затем я обрезал
core_url_rewrite
таблицу и импортировал сохраненный файл CSV с переписанными вручную URL-адресами.После всех изменений перешел с 940К строк на 32К. Огромное улучшение.
источник
Вот патч (локальная перезапись) для сообщества Magento для исправления, которое https://github.com/biotech/Magento-URL-Rewrite фактически делает то же самое, что и патч EE PATCH_SUPEE-389_EE_1.12.0.2_v2.sh - проверяйте каждую перезапись и избегать создания дублированных записей. Хорошо работает последние 2 месяца на производстве CE 1.9, 15 тыс. Товаров, 4 магазина, полное переиндексация каждую ночь после изменений в импорте сыпучих продуктов.
источник
Поскольку в этой теме об этом еще не упоминалось, я хотел бы поделиться интересной новостью о том, что эта проблема исправлена в Magento 1.9.3.9 и более поздних версиях. Смотрите соответствующие примечания к выпуску :
Таким образом, все исправления для этой проблемы, упомянутые здесь, не являются необходимыми при использовании версии Magento, большей или равной 1.9.3.9. Я все еще предлагаю удалить старые значения, как описано в ответе Алекса .
источник
Запустите этот запрос
Это, безусловно, поможет вам уменьшить размер
core_url_size
таблицы, удалив ненужные данные.источник
Избавляться от
.html
.html
Установить в .htaccess
Стереть все
.html
перенаправления:источник
Официальный ответ должен быть для установки SUPEE-389. Просто как тот.
Он отлично работает с Magento CE, поскольку они используют один и тот же кусок кода в этой области.
Вы можете найти файл патча здесь, https://gist.github.com/piotrekkaminski/c348538ca91ba35773be#file-patch_supee-389_ee_1-12-0-2_v2-sh
У нас была эта проблема, и она генерировала тысячи новых строк после каждого повторного индекса URL каталога. Теперь проблема исчезла ... за исключением того, что мы должны очистить БД.
Сценарий, представленный здесь, кажется хорошим началом, но это не идеальное решение,
См. Https://www.atwix.com/magento/duplicated-product-url-keys-in-community-edition/
источник
Существует также специальный модуль https://github.com/vladsmirnov/url-rewrites , поэтому вам не нужно повторно применять патч после каждого обновления Magento. Модуль состоит из двух частей: самого модуля, чтобы предотвратить дублирование, и сценария оболочки для очистки существующей базы данных.
источник