So we're trying to set-up a site to run both HTTP & HTTPs version in parallel for SEO auditing before making the full switch to HTTPs. We followed Ben's answer on this SE question to make it work: https://craftcms.stackexchange.com/a/4734/57.
The behavior we're seeing after implementing Ben's recommendation are that we can access both the http and https version of each page but a click on any link in the site populated by Craft templates (nav, blog overview page linking to other entries, etc.) takes us to the HTTP version of the page. So for example, if you're on https://example.com, a click on a nav link takes you to http://example.com/click rather than https://example.com/click. However, if we have a root relative link that was added manually through the control panel, that takes you to a version of the page consistent with the protocol of the current page. Basically, Craft is treating all links as if they're HTTP, even if you're on the secure version of the site.
We would like the site to function where if you're on the HTTPs version, a click on any link keeps you on the HTTPs version. Same goes for if you're on the HTTP version, any link click takes you to another HTTP page.
Is there a way to configure Craft to make that happen?
Here are the contents of our craft/config/general.php file:
<?php
/**
* General Configuration
*
* All of your system's general configuration settings go in here.
* You can see a list of the default settings in craft/app/etc/config/defaults/general.php
*/
// SEE http://buildwithcraft.com/docs/multi-environment-configs for info
// Ensure our urls have the right scheme
define('URI_SCHEME', ( isset($_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == "on" ) ? "https://" : "http://" );
// The site url
define('SITE_URL', URI_SCHEME . $_SERVER['SERVER_NAME'] . '/');
// The site basepath
define('BASEPATH', realpath(CRAFT_BASE_PATH . '/../') . '/');
return array(
// DEFAULT
'*' => array(
//'isSystemOn' => false,
'omitScriptNameInUrls' => true,
'cpTrigger' => 'discover',
'addTrailingSlashesToUrls' => true,
'siteUrl' => SITE_URL,
//'devMode' => (preg_match('/dev|xip|staging/', $_SERVER['HTTP_HOST']) ? true : false),
'devMode' => false,
'pardotUserName' => "FILLER TEXT",
'pardotPassword' => "FILLER TEXT",
'pardotUserKey' => "FILLER TEXT",
//'backupDbOnUpdate' => false,
'generateTransformsBeforePageLoad' => true,
// 'cacheDuration' => false,
'defaultImageQuality' => 90,
'caseListPagination' => 6,
),
// Example dev
'example.dev' => array(
'devMode' => true,
'caseListPagination' => 2,
),
'example.svn.dev' => array(
'devMode' => true
),
'local.example.com' => array(
'devMode' => true,
// 'enableTemplateCaching' => false // Only work on Craft 2.4 and later
),
'environmentVariables' => array(
'siteUrl' => SITE_URL,
'basePath' => BASEPATH
),
);
Thanks!
We're running ubuntu on Apache.
– dpayne Feb 14 '17 at 22:18$_SERVERvariable, although it's unlikely. Lets start with the basics. Are you able to create a temporary file in your public directory and show the output of<?php die(var_dump(isset($_SERVER['HTTPS'])));for both HTTP and HTTPS. Remember to remove the file when you're done.Also, are you definitely setting the
– Tom Feb 15 '17 at 15:19siteUrlconfig variable in config.php at the root of the array or under the '*' key?As to the siteUrl config, setting it at the root of the array, yes.
Thoughts?
– dpayne Feb 15 '17 at 18:24craft/config/general.php? Probably overlooking something. – RitterKnight Feb 15 '17 at 19:45environmentVariablesarray under the*as seen here in the docs. You're seeing the incorrect schema in the HTML source for links generated like this{{ entry.url }}? Do you have any redirects set in a .htaccess files for HTTP vs. HTTPS? – Tom Feb 16 '17 at 21:12'siteUrl' => (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https://craft.dev' : 'http://craft.dev',within general.php it's just a different method to defining the globals like you have. Give it a whirl. I'm in Craft's Slack if you want to find me there (tomw). – Tom Feb 16 '17 at 21:54'siteUrl' => '/',That should leave all the links on the same protocol. – Marion Newlevant Feb 17 '17 at 02:10