How To Redirect HTTPS To HTTP In Apache?

Published August 5, 2024

Problem: Redirecting HTTPS to HTTP in Apache

Redirecting HTTPS traffic to HTTP in Apache may be needed in some cases. This process sets up the server to send users from a secure HTTPS connection to an unsecured HTTP connection. While this is not common, it might be required in certain situations.

Apache Configuration for HTTPS to HTTP Redirection

Using mod_rewrite for Redirection

To redirect HTTPS to HTTP in Apache, you can use the mod_rewrite module. First, enable mod_rewrite in your Apache configuration with this command:

sudo a2enmod rewrite

After enabling mod_rewrite, add these rewrite rules to your Apache configuration file or .htaccess file:

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

These rules check if the connection is HTTPS and redirect it to the HTTP version of the same URL.

Tip: Testing Your Redirection

After implementing the rewrite rules, test your redirection by accessing your site via HTTPS. You should be automatically redirected to the HTTP version. Use browser developer tools or online redirect checkers to verify the 301 (permanent) redirect status.

Alternative Methods in Apache

Using mod_alias for Simple Redirections

For simple redirections, use the mod_alias module. Add this line to your Apache configuration:

Redirect permanent / http://yourdomain.com/

This redirects all HTTPS requests to the HTTP version of your domain.

Implementing Redirections Through .htaccess Files

If you can't access the main Apache configuration files, use a .htaccess file in your website's root directory. Add the same rewrite rules to the .htaccess file:

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Make sure to enable the use of .htaccess files in your Apache configuration if it's not already allowed.

Implementing the Redirection Solution

Steps to Configure Apache

To set up HTTPS to HTTP redirection in Apache, follow these steps:

  1. Find the configuration file:

    • Ubuntu/Debian: Look in /etc/apache2/sites-available/
    • CentOS/RHEL: Check /etc/httpd/conf.d/
    • For virtual hosts, locate the file for your site
  2. Add redirection rules:

    • Open the configuration file with a text editor
    • Add these lines to the file:
      RewriteEngine On
      RewriteCond %{HTTPS} on
      RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    • Save and close the file
  3. Restart Apache:

    • Ubuntu/Debian:
      sudo systemctl restart apache2
    • CentOS/RHEL:
      sudo systemctl restart httpd

After these steps, Apache will redirect HTTPS traffic to HTTP. Test the configuration to make sure it works as expected.

Tip: Verify Apache Modules

Before implementing the redirection, check if the necessary Apache modules are enabled. The rewrite module is required for the redirection rules to work. You can enable it using the following command:

sudo a2enmod rewrite

After enabling the module, restart Apache to apply the changes.

Testing the HTTPS to HTTP Redirection

To check if your HTTPS to HTTP redirection works correctly, use these methods:

  1. Use a web browser:

    • Open your website with HTTPS (e.g., https://yourdomain.com)
    • See if you're redirected to the HTTP version
    • Check the address bar to confirm the URL changed to http://
  2. Check redirect status:

    • Open browser developer tools (usually F12 key)
    • Go to the Network tab and reload the page
    • Look for a 301 (Permanent Redirect) status code for the first request
  3. Use online redirect checkers:

    • Try tools like redirect-checker.org or httpstatus.io
    • Enter your HTTPS URL and check the redirect chain
  4. Command-line tools:

    • Use curl to check the redirection:
      curl -I -L https://yourdomain.com
    • Look for "Location: http://yourdomain.com"; in the output

Tip: Use Telnet for Manual Testing

You can use Telnet to manually test the redirection:

  1. Open a terminal and type: telnet yourdomain.com 80
  2. After connecting, type: GET / HTTP/1.1
  3. Press Enter twice
  4. Check the response for a 301 status code and the Location header

If you have problems with the redirection, try these steps:

  1. Check Apache configuration:

    • Make sure the rewrite rules are in the right file
    • Check the syntax of the rules
  2. Restart Apache:

    • Changes might not apply until Apache is restarted
  3. Clear browser cache:

    • Old redirects might be cached, affecting your tests
  4. Check SSL/TLS configuration:

    • Make sure your SSL certificate is valid
    • Check that port 443 (HTTPS) is open on your server
  5. Review server logs:

    • Check Apache error logs for any redirection issues
  6. Test with different browsers:

    • Some browsers might handle redirects differently

By following these methods and steps, you can confirm that your HTTPS to HTTP redirection works as intended and fix any issues that occur.