Tôi quen với việc sử dụng các phương pháp khác nhau để tạo URL an toàn dựa trên ngữ cảnh, nghĩa là:
$this->getUrl('my-page', array('_forced_secure' => $this->getRequest()->isSecure()));
Điều này hoạt động rất tốt để xây dựng các liên kết sẽ hướng đến một trang bảo mật trong khi bạn ở chế độ bảo mật (hoặc sẽ chỉ liên kết đến trang không bảo mật nếu không sử dụng chế độ bảo mật).
Vấn đề tôi đang tìm kiếm là Magento chỉ xử lý một vài trang đặc biệt là cần phải bảo mật (tài khoản khách hàng, thanh toán, v.v.). Điều tôi thích là Magento luôn sử dụng một liên kết an toàn nếu người dùng hiện đang ở chế độ bảo mật hoặc sử dụng liên kết không bảo mật nếu người dùng ở chế độ không bảo mật.
Từ những gì tôi có thể nói, lựa chọn thực sự duy nhất của tôi là:
- Sửa đổi mọi trường hợp
$this->getUrl()
tương tự như đoạn trích ở trên. - Đặt không an toàn
base_url
để sử dụng HTTPS, buộc tất cả các trang phải bảo mật.
Có phương pháp nào tốt hơn không liên quan đến việc phải thay đổi mọi cuộc gọi thành $this->getUrl()
hoặc buộc tất cả các trang thành HTTPS bất kể bối cảnh của người dùng không?
-- biên tập --
Tôi biết tôi có thể sửa đổi /app/code/core/Mage/Core/Model/Url.php->setRouteParams()
phương pháp, mặc dù tôi hy vọng có một cách sạch hơn.