Я знаком с использованием различных методов для создания безопасного URL на основе контекста, а именно:
$this->getUrl('my-page', array('_forced_secure' => $this->getRequest()->isSecure()));
Это отлично подходит для создания ссылок, которые будут перенаправлять на защищенную страницу, пока вы находитесь в безопасном режиме (или просто будете ссылаться на незащищенную страницу, если не используете безопасный режим).
Проблема, которую я рассматриваю, заключается в том, что Magento рассматривает только несколько специальных страниц как требующие защиты (учетная запись клиента, проверка и т. Д.). Я бы предпочел, чтобы Magento всегда использовал безопасную ссылку, если пользователь в данный момент находится в безопасном режиме , или использовал незащищенную ссылку, если пользователь находится в незащищенном режиме.
Из того, что я могу сказать, мои единственные реальные варианты:
- Измените каждый экземпляр так,
$this->getUrl()
чтобы он был похож на приведенный выше фрагмент. - Установите небезопасный
base_url
для использования HTTPS, заставляя все страницы для защиты.
Есть ли лучший метод, который не требует изменения каждого вызова $this->getUrl()
или принудительного вызова всех страниц HTTPS независимо от контекста пользователя?
-- редактировать --
Я знаю, что могу изменить /app/code/core/Mage/Core/Model/Url.php->setRouteParams()
метод, хотя я надеюсь, что есть более чистый способ.
Mage_Core_Model_Store::getBaseUrl
вносили изменения, чтобы сделать наш магазин всегда безопасным, когда он встроен во вкладку Facebook. Однако следует учитывать и другие вещи, такие как хранение кеша блоков в зависимости от того, что ударил первым (вам нужно будет что-то добавить в ключ кеша). У вас также будут либо, как говорит Дэвид, небезопасные ссылки для входа в систему / оформления заказа, либо, в конечном счете, все клиенты вашего сайта окажутся в безопасном режиме, если они когда-либо войдут в систему или перейдут на проверку./catalogsearch/
безопасного пути должна включать в себя что-либо соответствующее/catalogsearch/*/*/
? Т.е. потребуется всего одно правило, чтобы всеcatalogsearch
было в безопасности.Установите следующее в вашем
app/etc/config.xml
файле:Это работает в Magento 1.9.1
Если пользователь использует https, все URL должны быть переписаны на https.
источник
Есть заниженная, но важная опция в Системе | Конфигурация | Web ~, где вы должны сказать «использовать безопасный URL-адрес во внешнем интерфейсе» - если вы установите для этого значение «да», то страница, загруженная https, будет использовать ссылки https
нет необходимости писать код или предоставлять дополнительную конфигурацию в большинстве случаев
источник