Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 813463
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T01:21:48+00:00 2026-05-15T01:21:48+00:00

We have a site I’ll call example.com. Most of the time you see http://www.example.com

  • 0

We have a site I’ll call example.com. Most of the time you see http://www.example.com and sometimes we redirect you to https://www.example.com.

We want to redirect anyone going to http://example.com or http://*.example.com to http://www.example.com, and the same for https. (It’s mainly to avoid the alert you get if you go to https://example.com instead of https://www.example.com)

Our vhost file is at the end of the post. It works nicely except for one strange behavior:

  • http://example.com -> successfully redirects to http://www.example.com
  • http://www.example.com -> successfully does not redirect
  • http://foo.example.com -> successfully redirects to http://www.example.com
  • https://example.com -> successfully redirects to https://www.example.com
  • https://www.example.com -> successfully does not direct
  • https://foo.example.com -> ERROR – redirects to http://www.example.com

It’s this last result I can’t fathom. I’ve tried a lot of trial and error solutions from Google & Stack Overflow but nothing seems to change it. Even if we swap the order of the configurations (so that 443 is before 80) it still redirects https://foo.example.com to http://www.example.com

We are running Apache/2.2.12 on Ubuntu.

Here’s the configuration file:

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com *.example.com
    ServerSignature On
    DocumentRoot /var/www/example.com/public
    RailsEnv 'production'
    PassengerHighPerformance on
    <Directory /var/www/example.com/public>
         AllowOverride all
         Options -MultiViews
    </Directory>
    SSLEngine Off
    CustomLog /var/log/apache2/example.log combined
    ErrorLog /var/log/apache2/example-error.log
    # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
    LogLevel warn
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} ^[^\./]+\.[^\./]+$ 
    RewriteRule ^/(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.com
    ServerAlias example.com *.acome.com 
    DocumentRoot /var/www/example.com/public
    RailsEnv 'production'
    PassengerHighPerformance on
    <Directory /var/www/example.com/public>
         AllowOverride all
         Options -MultiViews
    </Directory>
    SSLCertificateFile /etc/ssl/certs/www.example.com.crt
    SSLCertificateKeyFile /etc/ssl/private/example.com.private.key
    SSLCACertificateFile /etc/ssl/certs/EV_intermediate.crt
    SSLEngine On
    CustomLog /var/log/apache2/ssl-example.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    ErrorLog /var/log/apache2/ssl-example-error.log
    # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
    LogLevel warn
    RewriteEngine On
    RewriteCond %{HTTPS} on
    RewriteCond %{HTTP_HOST} ^[^\./]+\.[^\./]+$ 
    RewriteRule ^/(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T01:21:49+00:00Added an answer on May 15, 2026 at 1:21 am

    Thanks to everyone who took the time to read the question, or (even better) to try and help. It’s what makes Stack Overflow such a useful resource.

    We re-read TFM, learnt a bit more about Apache rewrite and here’s the answer.

    Problem #1: The rewrite rules (taken from Google) were designed to only redirect acme.com to http://www.acme.com, not any other sub-domain.

    Problem #2: For some reason, Chrome was redirecting to http://www.acme.com by itself. When we removed the rewrite rules completely, the described behavior still happened.

    Solution: Change the rewrite rules to actually catch any sub-domain other than www.

    See below for a working solution.

    There remains one issue. if you go to https://acme.com (or any sub-domain), some browsers will throw a warning saying the SSL certification does not match before redirecting you. The only way to fix this is to get a wildcard cert. As we’re using an Extended Validation cert that was already very expensive we’re just going to have to live with that warning for now. Would love to hear about any workarounds that would avoid showing an invalid cert warning before redirection.

    <VirtualHost *:80>
        ServerName www.acme.com
        ServerAlias acme.com *.acme.com
        ServerSignature On
        DocumentRoot /var/www/acme.com/public
        RailsEnv 'production'
        PassengerHighPerformance on
        <Directory /var/www/acme.com/public>
             AllowOverride all
             Options -MultiViews
        </Directory>
        SSLEngine Off
        CustomLog /var/log/apache2/acme.log combined
        ErrorLog /var/log/apache2/acme-error.log
        # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
        LogLevel warn
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteCond %{REQUEST_URI} ^/(stats/|missing\.html|failed_auth\.html|error/).* [NC]
        RewriteRule .* - [L] 
        RewriteCond %{ENV:REDIRECT_STATUS} 200
        RewriteRule .* - [L]
        RewriteCond %{HTTP_HOST} !^www\.[a-z-]+\.[a-z]{2,6} [NC]
        RewriteCond %{HTTP_HOST} ([a-z-]+\.[a-z]{2,6})$     [NC]
        RewriteRule ^/(.*)$ http://www.%1/$1 [R=301,L]
    </VirtualHost>
    
    <VirtualHost *:443>
        ServerName www.acme.com
        ServerAlias acme.com *.acme.com
        DocumentRoot /var/www/acme.com/public
        RailsEnv 'production'
        PassengerHighPerformance on
        <Directory /var/www/acme.com/public>
             AllowOverride all
             Options -MultiViews
        </Directory>
        SSLCertificateFile /etc/ssl/certs/www.acme.com.crt
        SSLCertificateKeyFile /etc/ssl/private/acme.com.private.key
        SSLCACertificateFile /etc/ssl/certs/EV_intermediate.crt
        SSLEngine On
        CustomLog /var/log/apache2/ssl-acme.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
        ErrorLog /var/log/apache2/ssl-acme-error.log
        # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
        LogLevel warn
        RewriteEngine On
        RewriteCond %{HTTPS} on
        RewriteCond %{REQUEST_URI} ^/(stats/|missing\.html|failed_auth\.html|error/).* [NC]
        RewriteRule .* - [L] 
        RewriteCond %{ENV:REDIRECT_STATUS} 200
        RewriteRule .* - [L]
        RewriteCond %{HTTP_HOST} !^www\.[a-z-]+\.[a-z]{2,6} [NC]
        RewriteCond %{HTTP_HOST} ([a-z-]+\.[a-z]{2,6})$     [NC]
        RewriteRule ^/(.*)$ https://www.%1/$1 [R=301,L]
    </VirtualHost>
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have Sharepoint site published in Intranet. Most of the time I configure modules
I have a site in rails and want to have site-wide settings. One part
I have a site running in a Windows shared hosting environment. In their control
I have a site, which contains several ashx handlers, on a couple of the
I have a site using a custom favicon.ico. The favicon displays as expected in
I have a site I made really fast that uses floats to display different
I have a site, from which you can download an HTML file. This HTML
I have a site with multiple document libraries in it. One of the site
I have a site that requires Windows Authentication the application obtains the credential from
I have a site that is using x509 client certificates (2 way SSL) to

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.