2015-06-23 11 views
7

Tôi đang sử dụng Sitecore 7,5 và thay thế hai điềuSitecore - viết lại “_” sang “-” trong url nhưng sẽ 404

<replace mode="on" find=" " replaceWith="-" />(Space with hyphen) 
<replace mode="on" find="_" replaceWith="-" />(underscore with hyphen) 

Thay thế gian (" ") với hyphne (-) đang làm việc tốt nhưng trong trường hợp gạch dưới (_) thay đổi dấu gạch nối (-) nhưng chuyển hướng đến 404, bất kỳ ý tưởng nào?

Chúng tôi có thể quản lý điều này bằng Trình xử lý sự kiện nhưng không muốn thực hiện theo cách đó.

Trả lời

10

Tôi đã nhận xét về another answer rằng vấn đề là khi giải quyết các mục, ứng dụng sẽ được thay thế ngược. Vì bạn có 2 thay thế cả ánh xạ thành "-" thì khi nó đến không thành công vì nó cố thay thế "-" bằng dấu cách ban đầu, nhưng một số dấu gạch nối đó phải gạch dưới nhưng không biết cái nào nên là cái nào.

Ví dụ: đường dẫn đã cho: /path to some/item_url thì url được tạo là /path-to-some/item-url.

Khi đến, các thay thế đảo ngược được trả lời và Sitecore hiện đang tìm kiếm /path to some/item url, không tồn tại và do đó 404 được ném. Vì "_" (dấu gạch dưới) được thay thế bằng dấu "-" (dấu gạch ngang), khi đến "-" (dấu gạch ngang) được thay thế bằng dấu "" (dấu cách). Vì không có dấu gạch nối nào để thay thế nên nó không thể thay thế bằng dấu gạch dưới.

Hãy xem trong Sitecore.Pipelines.HttpRequest.ItemResolver, Sitecore.Kernel và bạn sẽ thấy một cuộc gọi đến MainUtil.DecodeName(args.Url.ItemPath) nơi áp dụng EncodeNameReplacements.

Bạn nên sử dụng trình xử lý sự kiện để giải quyết vấn đề này ngay từ đầu, do đó bạn không cần phải lo lắng về bất kỳ loại ánh xạ nào.

+0

Tôi đã viết một bài đăng trên blog về cách sử dụng Công cụ quy tắc để kiểm soát việc đặt tên mục hữu ích để kiểm soát các url: https://jammykam.wordpress.com/2015/07/13/seo-friendly-urls-in-sitecore- Phòng bệnh hơn chữa bệnh/ – jammykam

Các vấn đề liên quan