Доставка статических ресурсов через SSL в TYPO3

У меня есть веб-сайт TYPO3, домашняя страница которого (и только домашняя страница) должна обслуживаться через SSL.

Моей первой попыткой разобраться с этим была установка расширения HTTPS Enforcer, которое позволяет указать определенные страницы на вашем сайте TYPO3, которые должны быть принудительно переведены на HTTPS. На этом уровне расширение работает так, как рекламируется. Но проблема в том, что, хотя запросы для одной из этих страниц действительно обрабатываются через SSL, ресурсы, встроенные в страницу (например, изображения), не доставляются через SSL. Таким образом, вы получаете предупреждение в своем браузере (которое, в зависимости от браузера, может варьироваться от тихого информационного сообщения до полной кричащей страницы с предупреждением) о том, что страница не полностью безопасна, что (по понятным причинам) пугает людей.

Итак, у меня вопрос - как заставить TYPO3 доставлять полную страницу через SSL, включая статические ресурсы? Есть ли способ настроить / расширить HTTPS Enforcer для этого? Есть ли другое расширение, которое лучше в этом сценарии? Или мне просто совсем не повезло?


person Jason A. Lefkowitz    schedule 01.02.2012    source источник


Ответы (2)


HTTPs Enforcer отлично справляется.

Если это всего одна страница, вы можете создать условие для изменения baseUrl:

[PIDinRootline = 123]
config.baseURL = https://www.example.com/
[global]

если это должно работать для всего поддомена (например, ssl.example.com), ваше условие выглядит следующим образом:

[globalString = ENV:HTTP_HOST=ssl.example.com]
config.baseURL = https://ssl.example.com/
[global]

При втором способе вы можете выбрать для каждой страницы, должна ли она быть зашифрована или нет.

Ловушка может заключаться в загружаемых извне ресурсах (например, API Facebook и т. Д.). Они могут не предлагать услуги с шифрованием SSL.


РЕДАКТИРОВАТЬ (из комментария @cascaval) Это может быть предпочтительным решением:

[globalString = _SERVER|HTTPS=on]
config.baseURL = https://ssl.example.com/
[global]

РЕДАКТИРОВАТЬ (из комментария @ konsolenfreddy)

[globalString = ENV:TYPO3_SSL=1]
config.baseURL = https://ssl.example.com/
[global]
person konsolenfreddy    schedule 01.02.2012
comment
Это именно то, что мне нужно. Спасибо! - person Jason A. Lefkowitz; 02.02.2012
comment
Условие [globalString = _SERVER|HTTPS=on] также должно работать и может использоваться для изменения config.baseURL для любой страницы, обслуживаемой через SSL. - person tmt; 02.02.2012
comment
@cascaval Ооо, это даже лучше! Спасибо! - person Jason A. Lefkowitz; 02.02.2012
comment
@cascaval: вы правы, у вас все более прямолинейно. Я добавил это к ответу - person konsolenfreddy; 02.02.2012
comment
@konsolenfreddy: Что ж, я не уверен, что это условие работает во всех средах, в отличие от вашего, которое работает, и поэтому оно совершенно хорошее. Поэтому я добавлю еще один, который, вероятно, должен быть более универсальным: [globalString = ENV:TYPO3_SSL=1] (взято из phpinfo в инструменте установки) - person tmt; 03.02.2012

Думаю, должно быть:

[globalVar = IENV:TYPO3_SSL = 1]
config.baseURL = https://ssl.example.com/
[global]

Обратите внимание на «IENV»: это специфично для TYPO3. «ENV» будет использовать только обычные переменные PHP в $ _ENV или $ _SERVER, где TYPO3_SSL не является допустимым ключом.

Но это только следующее: установите тег в выводе, чтобы содержимое относительных ссылок, например, ‹img src =" uploads / pics / image.jpg "/›, получалось через SSL.

Если у вас есть ссылки на ресурсы (изображения, CSS и т. Д.) На абсолютные URL-адреса на вашем сайте, это не поможет. В таком случае вы можете попробовать расширение «https» (слияние https_enforcer и другого расширения) или stfl_replace, чтобы создать какое-нибудь регулярное выражение, заменяющее ссылки «http: //» на «https: //».

person kraftb    schedule 19.02.2013