Мысли о переходе на https
Столкнулся с некоторыми проблемами при переходе на https. Все решилось правкой ссылок.
Я подумал возможно все сделать универсально, чтобы не было зависимости от протокола и вот какие мысли возникли:
1. Конфиг.
Наличие протокола https можно «забирать» прямо в php ($_SERVER['HTTPS']). Поэтому в конфиге прописал вот такую строку (переопределяем в config.local.php эту строку):
или одной строкой:
Выглядит непрезентабельно, и возможно неоптимально, но вроде работает. В зависимости от протокола по которому зашли, меняется конфиг
2. Ссылки на изображения.
На github-е уже предлагалось при загрузке изображений в редактор подставлять относительные ссылки.
Это дает универсальность и независимость от протокола. Но возникает проблема с RSS, т.к. в RSS потоке относительные ссылки не работают. По всей видимости, если переходить на относительные ссылки, то необходимо в ActionRSS делать replace для относительных ссылок и добавлять к ним
3. Внутренние ссылки в контенте.
Для внутренних ссылок существует универсальный способ
Я подумал возможно все сделать универсально, чтобы не было зависимости от протокола и вот какие мысли возникли:
1. Конфиг.
Наличие протокола https можно «забирать» прямо в php ($_SERVER['HTTPS']). Поэтому в конфиге прописал вот такую строку (переопределяем в config.local.php эту строку):
if (isset($_SERVER['HTTP_HOST'])) { if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { $config['path']['root']['web'] = 'https://'.$_SERVER['HTTP_HOST']; } else { $config['path']['root']['web'] = 'http://'.$_SERVER['HTTP_HOST']; } } else { // for CLI scripts. or you can append "HTTP_HOST=http://yoursite.url" before script run command $config['path']['root']['web'] = null; }
или одной строкой:
$config['path']['root']['web'] = isset($_SERVER['HTTP_HOST']) ? ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] : null;
Выглядит непрезентабельно, и возможно неоптимально, но вроде работает. В зависимости от протокола по которому зашли, меняется конфиг
{Config::Get('path.root.web')}
2. Ссылки на изображения.
На github-е уже предлагалось при загрузке изображений в редактор подставлять относительные ссылки.
src="http://site.com/uploads/images/.../img.jpg" -> src="/uploads/images/.../img.jpg"
Это дает универсальность и независимость от протокола. Но возникает проблема с RSS, т.к. в RSS потоке относительные ссылки не работают. По всей видимости, если переходить на относительные ссылки, то необходимо в ActionRSS делать replace для относительных ссылок и добавлять к ним
{Config::Get('path.root.web')}
3. Внутренние ссылки в контенте.
Для внутренних ссылок существует универсальный способ
href="http://site.com/..." -> href="//site.com/..."
. В данном случае протокол у ссылки будет задействован тот, в котором открыта страница со ссылкой. Решение универсальное, но распространяется только на внутренние ссылки. Вероятно, возможно применить это, делая replace в контенте при условии что это внутренняя ссылка.