Serving HTTP and HTTPS from one installation

I’ve got a WordPress install that is serving up content via both HTTP and HTTPS. The site URL is configured as “http://www.example.com”. This works for most situations – if a person requests a page at “https://www.example.com/page” the page is served up via HTTPS.

However, the challenge that I’m facing is that there are a number of WordPress template functions which pull the site URL (like get_bloginfo(‘stylesheet’) ) and when they do that, they include “http://” in the returned results. Similarly, images that are inserted in the WYSIWYG editor have the “http://www.example.com…” path hard coded.

Read More

What I’d really like to do is find a way to define the base site URL as “//www.example.com”, which would hopefully make everything work correctly. However, the WordPress admin fields won’t support this.

Does anyone have any ideas how to do this?

Related posts

Leave a Reply

2 comments

  1. An easy solution is to use .htaccess rules.

    #Redirect HTTP to HTTPS
    RewriteCond %{HTTPS} off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
  2. If you don’t want to force HTTPS (or redirect all non-HTTPS requests) the URLs in posts can be handled like this:

    function content_ssl($content) {
      if (isset($_SERVER["HTTPS"]))
        $content = ereg_replace("http://" . $_SERVER["SERVER_NAME"], "https://" . $_SERVER["SERVER_NAME"], $content);
      return $content;
    }
    add_filter('the_content', 'content_ssl');
    

    WordPress itself handles protocol matching. Some plugins however do not.