우리는 당신이 제임스와 비슷한 상황에 처해 있습니다. 많은 파기를 한 후에 이것은 내가 생각해 낸 것입니다.
이제 core_url_rewrite
테이블이 더 이상 사용되지 않으며, 대신 Magento EE 1.13은 다시 쓰기를에 저장합니다 enterprise_url_rewrite
.
테이블 :
실행할 때 테이블을 enterprise_*_category_rewrite
사용 catalog_*_entity_url_key
하여 두 개의 다시 쓰기 테이블을 다시 작성하십시오.php indexer.php --reindex catalog_url_*
사용자 정의 URL에 대한 관리자 카탈로그-> URL 리디렉션에서 'URL 리디렉션'을 추가하면 해당 URL이 enterprise_url_rewrite_redirect
테이블에 추가되고 인덱스가 오래되었다는 마 젠토 플래그 enterprise_url_rewrite_redirect_cl
가 실행되면 테이블을 php indexer.php --reindex url_redirect
다시 작성 enterprise_url_rewrite_redirect_rewrite
합니다.
빠른 참고로, _cl로 끝나는 모든 테이블은 잘리는 것이 안전하고 'CL'은 변경 로그를 나타내며 Magento에서 재 인덱싱이 필요한지 확인하는 데 사용됩니다.
URL 키 테이블에 관한 한, 나는 두 개의 URL 키 항목이 왜 하나에 catalog_*_entity_url_key
하나씩 catalog_*_entity_varchar
(속성 id 90) 있는지에 대해 약간의 단서가 없지만, 이것이 일어난다 고 가정합니다.
새 제품을 만들 때 / 카테고리 젠토는에 배치 된 url_key 생성하는 이름을 사용 catalog_*_entity_url_key
하고의를 catalog_*_entity_varchar
하지만, 마 젠토 사용하는 기본 테이블은이다 catalog_*_entity_url_key
당신이 그것을 절단하고 실행하는 경우 때문에 php indexer.php --reindex catalog_url_*
당신의 enterprise_*_category_rewrite
테이블이 비어 및 제품 / 카테고리에있는 것 프론트 엔드 즉 추한 URL을 표시합니다 http://example.com/catalog/product/view/id/123/etc/etc
(SOE 친화적하지 않음) 나는 두 개의 테이블이 관련하고 빌드하는 데 사용됩니다 생각 enterprise_url_rewrite
테이블을 때문에이 테이블에 저장합니다 'request_path'가능성이 가장 높은 내부 url_key catalog_*_entity_varchar
테이블과 '식별자'기본이다 catalog_*_entity_url_key
표의 URL 키 url_key 및 varchar 테이블에 대해 완전히 틀릴 수 있으므로 크게 생각하고 있습니다.
어쨌든 실행할 수있는 모든 다시 쓰기 테이블을 성공적으로 자르고 다시 작성하려면 다음을 수행하십시오.
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE `core_url_rewrite`;
TRUNCATE TABLE `enterprise_catalog_category_rewrite`;
TRUNCATE TABLE `enterprise_catalog_product_rewrite`;
TRUNCATE TABLE `enterprise_url_rewrite`;
TRUNCATE TABLE `enterprise_url_rewrite_category_cl`;
TRUNCATE TABLE `enterprise_url_rewrite_product_cl`;
TRUNCATE TABLE `enterprise_url_rewrite_redirect_cl`;
TRUNCATE TABLE `enterprise_url_rewrite_redirect_rewrite`;
SET FOREIGN_KEY_CHECKS = 1;
그런 다음 다음을 실행하십시오.
sudo php indexer.php --reindex catalog_url_product
sudo php indexer.php --reindex catalog_url_category
sudo php indexer.php --reindex url_redirect
또한 자르면 enterprise_url_rewrite_redirect
관리자 패널에 표시되는 모든 사용자 정의 리디렉션을 잃어 버릴 것입니다. 아마도 쓸모없는 URL이 많이 남아 있기 때문에 이것이 목표 일 것입니다. '* _entity_url_key'테이블을 자르지 않는 한 괜찮습니다.
우리가 중복 URL 키와 1.11에서 1.13로 업그레이드 한 후 엑셀 수입에서 제품 이름을 가진 큰 문제가 있었기 때문에 나는 다시이 빠른 스크립트 작성, 그래서 우리의 이야기는 조금 달랐다 catalog_product_entity_url_key
에 테이블과 URL 키와 URL 경로 catalog_product_entity_varchar
테이블을 사용하여 제품을 이름. 아래 코드를 첨부했지만 사용하는 경우 자신의 책임하에 사용해야합니다.
<?php
include_once('app/Mage.php');
Mage::app();
$dbHandle = Mage::getSingleton('core/resource')->getConnection('core_write');
$productCounter = 0;
$nameFixCounter = 0;
$vUrlKeyFixCounter = 0;
$urlPathCounter = 0;
$urlKeyCounter = 0;
$productCollection = $dbHandle->query("SELECT entity_id, sku FROM catalog_product_entity");
while($product = $productCollection->fetch()) {
$dataString = null;
$oldProductName = $dbHandle->query("SELECT value FROM catalog_product_entity_varchar WHERE entity_id = '".$product['entity_id']."' AND attribute_id = 65")->fetch();
$oldVarcharUrlKey = $dbHandle->query("SELECT value FROM catalog_product_entity_varchar WHERE entity_id = '".$product['entity_id']."' AND attribute_id = 90")->fetch();
$oldUrlPath = $dbHandle->query("SELECT value FROM catalog_product_entity_varchar WHERE entity_id = '".$product['entity_id']."' AND store_id = 0 AND attribute_id = 91")->fetch();
$oldUrlKey = $dbHandle->query("SELECT value FROM catalog_product_entity_url_key WHERE entity_id = '".$product['entity_id']."'")->fetch();
$newProductName = preg_replace('/\s+/', ' ', trim(preg_replace('/[^\x20-\x21\x23-\x2B\x2D-\xE7]/', ' ', $oldProductName['value'])));
$newUrlKey = preg_replace('/\s+/', '-', trim(preg_replace('/[^\x30-\x39\x61-\x7A]/', ' ', strtolower($newProductName))));
if (strcmp($oldProductName['value'], $newProductName)) {
echo "-[".$oldProductName['value']."]\n";
echo "+[".$newProductName."]\n";
$dbHandle->query('UPDATE catalog_product_entity_varchar SET value = "'.$newProductName.'" WHERE entity_id = "'.$product['entity_id'].'" AND attribute_id = 65');
++$nameFixCounter;
}
if (strcmp($oldVarcharUrlKey['value'], $newUrlKey)) {
echo "-[".$oldVarcharUrlKey['value']."]\n";
echo "+[".$newUrlKey."]\n";
if ($oldVarcharUrlKey['value'] === null) {
$dbHandle->query("INSERT INTO catalog_product_entity_varchar (entity_type_id, attribute_id, store_id, entity_id, value) VALUES ('4', '90', '0', '".$product['entity_id']."', '".$newUrlKey."')");
} else {
$dbHandle->query("UPDATE catalog_product_entity_varchar SET value = '".$newUrlKey."' WHERE entity_id = '".$product['entity_id']."' AND attribute_id = 90");
}
++$vUrlKeyFixCounter;
}
if (strcmp($oldUrlPath['value'], $newUrlKey.'.html')) {
echo "-[".$oldUrlPath['value']."]\n";
echo "+[".$newUrlKey.".html]\n";
if ($oldUrlPath['value'] === null) {
$dbHandle->query("INSERT INTO catalog_product_entity_varchar (entity_type_id, attribute_id, store_id, entity_id, value) VALUES ('4', '91', '0', '".$product['entity_id']."', '".$newUrlKey.".html')");
} else {
$dbHandle->query("UPDATE catalog_product_entity_varchar SET value = '".$newUrlKey.".html' WHERE entity_id = '".$product['entity_id']."' AND store_id = 0 AND attribute_id = 91");
}
++$urlPathCounter;
}
if (strcmp($oldUrlKey['value'], $newUrlKey)) {
echo "-[".$oldUrlKey['value']."]\n";
echo "+[".$newUrlKey."]\n";
if ($oldUrlKey['value'] === null) {
$dbHandle->query("INSERT INTO catalog_product_entity_url_key (entity_type_id, attribute_id, store_id, entity_id, value) VALUES ('4', '90', '0', '".$product['entity_id']."', '".$newUrlKey."')");
} else {
$dbHandle->query("UPDATE catalog_product_entity_url_key SET value = '".$newUrlKey."' WHERE entity_id = '".$product['entity_id']."'");
}
++$urlKeyCounter;
}
$report = "[".++$productCounter."] ";
$report .= "NAME: [".(strcmp($oldProductName['value'], $newProductName)?'!=':'==')."] ";
$report .= "V_KEY: [".(strcmp($oldVarcharUrlKey['value'], $newUrlKey)?'!=':'==')."] ";
$report .= "PATH: [".(strcmp($oldUrlPath['value'], $newUrlKey.'.html')?'!=':'==')."] ";
$report .= "KEY: [".(strcmp($oldUrlKey['value'], $newUrlKey)?'!=':'==')."]\n";
echo $report;
}
echo 'Total Products: ['.$productCounter.'] Names: ['.$nameFixCounter.'] V_Keys: ['.$vUrlKeyFixCounter.'] Paths: ['.$urlPathCounter.'] Keys: ['.$urlKeyCounter.']';
코드가 여기 Magentos formatKey 방법을 사용 불통 될 수 http://www.magentocommerce.com/wiki/3_-_store_setup_and_management/seo/url_key_characters_conversion은 내가 reupdating 귀찮게하지 않았다, 그래서 나는 모든 키를 업데이트 한 후 불행하게도 나는 위키를 건너 왔어요 다시 모든.
희망이 있습니다 :)!
core_url_rewrite
작동했습니다.