generaldjango

Redirect custom domains to the Apache server

When redirecting custom domains to the Apache server, there are two steps to be performed:

  • Create a virtual host for each domain (with certificates, if required)
  • Add redirection rules to the Apache server configuration

Create a virtual host for each domain

To create a virtual host:

  • Add a ServerAlias in the /opt/bitnami/apache/conf/vhosts/APPNAME-vhost.conf file for your application. This option is designed to specify alternate names for a host and is used when matching requests. Here’s an example:

      <VirtualHost *:80>
        ServerName app.example.com
        ServerAlias www.app.example.com app.example.org www.app.example.uk.org
        ...
    
  • Add a ServerAlias in the /opt/bitnami/apache/conf/vhosts/APPNAME-https-vhost.conf file for your application. This option is designed to specify alternate names for a host and is used when matching requests. Here’s an example:

      <VirtualHost *:443>
        ServerName app.example.com
        ServerAlias www.app.example.com app.example.org www.app.example.uk.org
        ...
    

    You will also need to create new certificates for each virtual host running on port 443 or use existing certificates, such as the default certificates shipped with the stack. You have two options:

    • Option A: Update the SSLCertificateFile and SSLCertificateKeyFile directives for the virtual host to reflect the correct path for each virtual host’s certificates:

      … SSLCertificateFile “/opt/bitnami/apache/conf/bitnami/certs/app.example.com.crt” SSLCertificateKeyFile “/opt/bitnami/apache/conf/bitnami/certs/app.example.com.key” …

    • Option B: Create symlinks to the default certificates.

  • After modifying the Apache configuration files, restart Apache to apply the changes:

      $ sudo /opt/bitnami/ctlscript.sh restart apache
    

Add redirection rules

The next step is to add the necessary redirection rules for each domain. The sections below cover two common scenarios.

Redirect www.myapp.example.com to myapp.example.com

This redirection is an SEO “best practice”.

  • Add the following rules in the /opt/bitnami/apache/conf/vhosts/APPNAME-vhost.conf file, within the VirtualHost block for your domain:

      <VirtualHost *:80>
        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
        RewriteRule ^(.*)$ http://%1$1 [R=permanent,L]
        ...
    
  • Add the following rules in the /opt/bitnami/apache/conf/vhosts/APPNAME-https-vhost.conf file, within the VirtualHost block for your domain:

      <VirtualHost *:443>
        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
        RewriteRule ^(.*)$ https://%1$1 [R=permanent,L]
        ...
    
  • After modifying the Apache configuration files, restart Apache to apply the changes:

      $ sudo /opt/bitnami/ctlscript.sh restart apache
    

NOTE: Many browsers perform SSL verification of HTTPS endpoints before executing any redirection. This means that if you plan to redirect HTTPS requests to a non-HTTPS endpoint, you must ensure that your SSL certificate includes an entry for the HTTPS endpoint requested in the first instance.

Redirect myapp.example.com to www.myapp.example.com

  • Add the following in the /opt/bitnami/apache/apps/APPNAME/conf/httpd-vhosts.conf file in the VirtualHost block for your domain. Or, to apply this redirection by default for all domains, add it to the default VirtualHost block in the /opt/bitnami/apache/conf/bitnami.conf file.

      <VirtualHost *:80>
        RewriteEngine On
        RewriteCond %{HTTP_HOST} !^www\. [NC]
        RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
        ...
    
      <VirtualHost *:443>
        RewriteEngine On
        RewriteCond %{HTTP_HOST} !^www\. [NC]
        RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
        ...
    
  • After modifying the Apache configuration files, restart Apache to apply the changes.

Last modification February 9, 2023