Redirecting your domain to a new URL on Apache using .htaccess (including SSL/TLS (HTTPS))

Redirecting to a new URL (domain and/or path)

Make sure you’ve got mod_rewrite on and your rewrite base is propertly set:

RewriteEngine On
RewriteBase /

Redirecting a domain

Describe all the domains that you want redirected. In this case we want to redirect both alpha-domain.com and its subdomain www.alpha-domain.com:

RewriteCond %{HTTP_HOST} ^alpha-domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.alpha-domain.com$

And point those requests that match the condition to the new domain by using:

RewriteRule (.*)$ https://beta-domain.com/$1 [R=301,L]

As a summary, this is what we should have in the .htaccess file:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^alpha-domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.alpha-domain.com$
RewriteRule (.*)$ https://beta-domain.com/$1 [R=301,L]

Redirecting to secure connection (TLS/SSL (aka HTTPS))

Below is all there’s needed. If you want to ensure the user is always redirected to TLS in addition to a new domain, just omit the first two lines if you already have them in the .htaccess file:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS}  !=on 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 

NB: This one is domain-agnostic, so in the case of redirecting to a new domain, make sure you have redirected the user to the new domain, before sending him on the secure connection.

Git: Sample SSH config for multiple repos

Using multiple repos with Git (which relies on OpenSSH) terminal/CLI while keeping security a priority with separate keys requires an initial config. Here is a must-know „trick“ if you need similar setup. You will need to create a file called „config“ (yes, no file extension) in you .ssh/ folder. The sample file below provides more details.

# Alias
Host <host-name>

# Host domain or IP
HostName <host-ip/domain>

# (Optional) Username - when using SSH
User <host-username>

# Path to file identity file (i.e. private key)
IdentityFile <path-to-private-key>

In a scenario where we need access to both Gitlab and Github, an actual example would be:

# Github
Host github.com
HostName github.com
IdentityFile ~/.ssh/github_rsa

# Gitlab
Host gitlab.com
HostName gitlab.com
IdentityFile ~/.ssh/gitlab_rsa

This way when you try to execute a git pull from either GitLab or GitHub you will be using the appropriate key for the corresponding repo.

Cheers!