Reputation: 378
I want to redirect all incoming urls to my website to a single url for canonicalization purposes.
Following redirect conditions should meet
My current Rewrite rules written in httpd.conf look as follows
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE]
With the above rules I am able to achieve 1st,2nd and 4th rule but 3rd doesn't work for me. Any suggestions are welcome.
Upvotes: 1
Views: 1187
Reputation: 2788
The definition for HTTPS and HTTP version of your site must (?) appear under different virtualhost entries (unless you are using some proxy in front of httpd).
This makes it easy to end up with differences between the configs in the two virtualhosts. Make sure the config for the redirect is the same in both virtualhosts for port 80 and port 443
The easiest way to do this is to make use of an Include
statement and reference a common file in the two virtualhost definitions
For instance put these rewrites in a file base-rewrite.inc
in the root config dorectory (/etc/apache2/base-rewrite.inc
in debian/ubuntu; /etc/httpd/base-rewrite.inc
in Redhat):
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE]
Then in your virtual hosts definition, Include
this file:
<VirtualHost *:80>
# HTTP default virtualhost
ServerName www.example.com
DocumentRoot /var/www/html/
Include base-rewrite.inc
</VirtualHost>
<VirtualHost *:443>
# HTTPS default virtualhost
ServerName www.example.com
DocumentRoot /var/www/html/
# An example SSL config, but use your certificate files
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Include base-rewrite.inc
</VirtualHost>
This will keep the rewrites consistent and make it easy to maintain and change them all at once
Upvotes: 1
Reputation: 324
If you're talking about canonicalization for SEO purposes then you should also add this meta tag to the head section of your web pages:
<link rel="canonical" href="https://www.example.com/" />
What this does is tell search engines that whatever url was used to reach this page, this is the preferred url and the one that should be indexed.
Upvotes: 0