I am using the following code to direct all www requests to non-www URLs:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.org$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
This works great inside an .htaccess file in the root of my website.
For example,
www.example.com -> example.com/
www.example.com/ -> example.com/
www.example.com/other_page -> example.com/other_page
However, if I move this same code into my VirtualHost configuration, the rewritten URLs contain a double trailing slash.
www.example.com -> example.com//
www.example.com/ -> example.com//
www.example.com/other_page -> example.com//other_page
I fixed it by removing the slash from the rewrite rule:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.org$ [NC]
RewriteRule ^(.*)$ http://example.com$1 [R=301,L]
But I can't understand the reason for this. Anyone know why?