Canonicalization issue? - URLs with and without trailing slashes showing up as unique
-
For some reason, our urls are set to change from “www.apprenda.com/ANYTHING" to “apprenda.com/ANYTHING”
These register as different pages though? We have rankings in SEOMoz Pro for terms where our homepage shows up 6th on google, but SEOMoz says it's not on the first page because it's checking against apprenda.com and not www.apprenda.com
Also, it seems like for some reason pages with trailing slashes also register differently than those without. Should we be doing something for that? Something to make sure all pages get rewritten to having the trailing slash or not?
For instance, this url: http://apprenda.com/saasgrid/features/multi-tenancy/ and this url” http://apprenda.com/saasgrid/features/multi-tenancy are really the same page. Yet in our analytics, they register as different pages with their own stats, etc.
What should we do in our particular case, and how can we get this fixed?
I really appreciate the help, and thanks in advance!
- Jesse
-
You should utilize htaccess 301 permanent redirects to force trailing slashes and www. to your URLs (or vice versa). This way you will let Google and other search engines know the correct way to be displaying your URLs. Anything pointing to your domain that doesn't fit that will be redirected to the proper format. This, as well as utilizing canonical tags, should take care of your duplicate content issue.
I'm assuming you have an index.php for your website but modify this and test as needed.
Externally redirect to add missing trailing slash to URLs with no filetype
RewriteCond $1 !(.[a-z0-9]{1,5}|/)$ [NC]
RewriteRule ^(.*)$ http://www.mywebsite.com/$1/ [R=301,L]Externally redirect non-blank non-canonical hostname request to canonical hostname
(if not already done by the above rule)
RewriteCond %{HTTP_HOST} !^(www.mysite.com)?$
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]Rewrite all requests which do not resolve to existing files to the CMS script, except
for image, css, and JS file requests, none of which need to be handled by the CMS,
and requests for index.php itself (to avoid a wasteful second-pass exists check).
RewriteCond $1 !(^index.php|.(gif|jpe?g|png|css|js))$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]Make sure you test this out before going live but it should work for what you need.
-
Awesome, thanks Jared! Our site is .NET based, but I believe their is a standard "index.aspx". Would this still apply?
Also, you mentioned that this, AS WELL AS utilizing canonical tags should take care of this. How should we go about utilizing canonical tags for our site?
Thanks again!
- Jesse
-
Here's a good post (here at SEOmoz) about the rel=canonical tag: http://www.seomoz.org/blog/complete-guide-to-rel-canonical-how-to-and-why-not
Here is a good resource for 301 redirects in other languages: http://www.webconfs.com/how-to-redirect-a-webpage.php
I don't have much experience with .NET but it looks like there are two ways to accomplish it. 1) Make changes to IIS to create the permanent redirect, 2) create server side code (maybe you have to check what URL is being requested and redirect them to the correct format?). You should be able to use REGEX like is displayed in my original post to accomplish this in .NET.
I would say the change directly in IIS, if you have access, is the way to go.
Jared