301 redirection between different domains with rewrite rules on Apache VirtualHost

In this example I explain how to make a 301 redirection (permanent redirection) between different domains with rewrite rules on Apache VirtualHost maintaining the full URI.

I want to redirect the HTTP and HTTPS queries made to the example.org domain to the example.com domain, in HTTPS mode.

I divide the code in 2 VirtualHosts: the first for the HTTP queries and the second for the HTTPS queries.

On each VirtualHost I redirect the HTTP/HTTPS queries using Apache Rewrite Rules.

Be careful that you will need an SSL certificate for the HTTPS queries on the example.org domain and, of course, another for the example.com domain.

<VirtualHost *:80>
        ServerName www.example.org
        ServerAlias example.org
        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteRule ^/?(.*) https://www.example.com/$1 [R=301,L]
        ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
</VirtualHost>

<VirtualHost *:443>
        ServerName www.example.org
        ServerAlias example.org
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/www.example.org/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/www.example.org/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/www.example.org/chain.pem
        RewriteEngine On
        RewriteRule ^/?(.*) https://www.example.com/$1 [R=301,L]
        ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
</VirtualHost>

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.