Các hàng không phải là hệ thống lạ được thêm vào core_url_rewrite


8

core_url_rewriteBảng của chúng tôi dường như đang tăng quá mức (21 triệu hàng hiện tại) - Tôi biết đã có những câu hỏi khác về vấn đề này, nhưng dường như không ai trong số chúng đề cập đến sự kỳ lạ đặc biệt này: rất nhiều hàng mới được thêm vào is_system = 0, và id_pathđó là một cái gì đó như " 97704000_1422557940 ". Số sau dấu gạch dưới có vẻ là dấu thời gian mà hàng được thêm vào, nhưng tôi không chắc số đầu tiên là gì.

Lời khuyên cho core_url_rewritecác vấn đề dường như luôn là cắt ngắn bảng và lập chỉ mục lại, và nó có thể đi đến đó, nhưng chúng ta có rất nhiều cách viết lại tùy chỉnh trong bảng nên việc phải liên tục thêm lại chúng sẽ là một nỗi đau thực sự và tôi muốn tìm hiểu gốc rễ của vấn đề.

Chúng tôi vừa nâng cấp lên 1.9.1.0, nhưng có những hàng trong bảng trở lại gần hai năm (!).

Có ý kiến ​​gì không?

Câu trả lời:


6

Đây là một vấn đề cổ điển với viết lại. Nguyên nhân gốc là không có các khóa URL duy nhất. Thông thường gây ra bởi có một phần sản phẩm đơn giản có thể cấu hình với cùng tên.

Vì các lý do rõ ràng, một đường dẫn yêu cầu (URL) phải khớp với một hành động trong Magento. Do đó, tất cả các đường dẫn yêu cầu cần phải là duy nhất. Đường dẫn URL của sản phẩm và danh mục được tạo từ các khóa URL của chúng và thông thường khi bạn có các sản phẩm có thể định cấu hình, chủ cửa hàng / nhân viên phụ trợ không dành thời gian để đảm bảo các sản phẩm đơn giản bên dưới cấu hình có các khóa URL khác nhau. Điều này khiến Magento chèn dấu gạch ngang và số thứ tự. Với một sản phẩm có thể định cấu hình với 4 mô phỏng, điều này có nghĩa là ít nhất 4 URL có trình tự được thêm vào mỗi lần lặp (vì Magento không / không thể phân biệt giữa các lần chạy mà chuỗi đã được tạo). Điều này cộng lại nhanh chóng trong một danh mục lớn.

Quy trình phục hồi như sau:

  1. Đảm bảo tất cả các khóa URL là duy nhất sửa lỗi đầu vào của bạn và thực hiện một bản ghi lại khác.
  2. Loại bỏ tất cả các viết lại phù hợp WHERE id_path LIKE "%_%" AND options="RP" AND (catalog_id IS NOT NULL OR product_id IS NOT NULL) AND target_path NOT IN (temp_table).
  3. Đối với các kết hợp ghi lại còn lại, WHERE id_path LIKE "%_%" AND options="RP" AND (catalog_id IS NOT NULL OR product_id IS NOT NULL)đặt request_path thành target_path và đặt target_path thành request_path khớp với kết hợp category_id-product_id và trong đó các tùy chọn IS NULL.
  4. Cài đặt tiện ích mở rộng này và cho phép tất cả tối ưu hóa
  5. Reindex viết lại ít nhất hai lần, xác minh số lượng hàng là nhất quán (không có thay đổi nào đối với sản phẩm hoặc danh mục).
  6. Giám sát Công cụ quản trị trang web và 404 để biết thêm các URL cũ vẫn còn trong trình thu thập dữ liệu và cần được chuyển hướng. Tốt nhất là thực hiện 301 trong máy chủ web của bạn để giữ core_url_rewritesạch sẽ.

Ghi chú: Tập lệnh này giúp tạo các khóa URL là duy nhất, bằng cách lặp lại các giá trị thuộc tính và nối thêm chúng cho đến khi một khóa duy nhất được tạo. Lưu ý rằng tập lệnh này không kiểm tra xung đột giữa danh mục và sản phẩm. Thông thường, đây không phải là một vấn đề, vì các danh mục được đặt tên tự nhiên ở số nhiều, nhưng nếu bạn bán ví dụ cừu hoặc cá thì đây vẫn có thể là một vấn đề. Một trường hợp góc khác là xung đột giữa các URL danh mục và các trang CMS. Kịch bản lệnh này không kiểm tra nó, nhưng nó cũng không ảnh hưởng đến việc viết lại vì các định danh trang CMS không có trong đó. Điều này chỉ đơn giản sẽ dẫn đến trang CMS hoặc trang danh mục / sản phẩm được hiển thị nơi người ta mong đợi để xem trang khác.

Temp_table được đề cập phải được điền với các URL có trong tất cả các sơ đồ trang web. Điều này giảm thiểu một số tác động SEO bằng cách giữ cho biến thể hiện tại của dấu gạch ngang và số thứ tự còn tồn tại và trong bước 3, điều này sau đó được viết lại thành URL chính xác. Tiện ích mở rộng trong bước 4 ngăn một số URL vào bảng core_url_rewrite, đáng chú ý nhất là các sản phẩm không được đặt thành hiển thị "danh mục / tìm kiếm". Khi bạn có các sản phẩm đơn giản là một phần của cấu hình và không được liệt kê riêng, những sản phẩm này phải được đánh dấu "không hiển thị riêng lẻ" và tiện ích mở rộng này sau đó ngăn không cho chúng nhập lại. Đây là một tối ưu hóa có giá trị cho các cửa hàng với các sản phẩm có thể định cấu hình bất kể chúng có vấn đề viết lại URL này. Về bước 5, nếu không có thay đổi nào được thực hiện đối với các phím url của sản phẩm và danh mục, sau đó mọi chỉ mục sẽ tạo ra cùng một số lượng ghi lại. Nếu đây không phải là trường hợp, bạn vẫn có một cuộc xung đột ở đâu đó và nên săn lùng nó.

Hy vọng điều này làm rõ mọi thứ một chút.


câu trả lời hay và +1 cho điều đó. Nhưng sẽ thật tuyệt nếu bạn thêm nhiều chi tiết như cách giải quyết vấn đề cốt lõi này, bất kỳ liên kết nào.
Rajeev K Tomy

Sẽ làm. Đang trên đường ra.
Melvyn

0

Tôi tin rằng đây thường là các chuyển hướng được tạo theo chương trình khi bạn thay đổi sản phẩm và danh mục trong danh mục. Chúng có nghĩa là duy trì các liên kết cũ để đưa khách hàng đến các địa điểm mới, nhưng bạn có thể có thể thanh lọc chúng sau một thời gian vì chúng có xu hướng xây dựng theo thời gian, đặc biệt là nếu bạn có nhiều trang web / cửa hàng / lượt xem và nhiều sản phẩm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.