Because of the way URL re-writing is done... there is a huge duplicate content issue, and the fact that nopCommerce doesn't come with canonical tags makes this worse..
This means that once search engines have deemed them to be duplicates, the one with the lowest page ranking will be dropped... Which doesn't sound too bad.. but take a case in point;
Say I have lots of people linking my pages and improving my page ranking...
Then EVIL massive competitor company comes along.. and does the following link on their massively well ranked website;
http://www.mysite.com/178-a.aspx.">click here</a>
Can you see the problem? My high quality link with all the keywords will be dropped, and my page ranking will be obliterated!
This is something that can and does happen and essentially means competitors can affect your SEO.
I'm going to modify my version of nop so that it checks the URL stored in the database against the ID number.. and if it doesn't match up.. it will throw a 404..
I'm also trying to find an easy way to implement canonical URLs as well
I know it seems like having LESS url's landing on 404 pages is better... but duplicate content is more of an issue for SEO reasons which are more important for traffic...
I have fixed the category page with 6 lines of code, am going to apply these to the product / topic etc.. pages as well..
This is my suggested code to fix this problem (this example is for category) :)
Because of the way URL re-writing is done... there is a huge duplicate content issue, and the fact that nopCommerce doesn't come with canonical tags makes this worse..
I'd like to see this incorporated into nopCommerce.
We compare the SEO link with the current URL, if they don't match we throw a 404, we also change the default response which deals with invalid ID numbers by changing it from redirecting to the home page... to throwing a 404.
I've managed to do this for category, blog, manufacturer, product and news.
Next thing is the URL re-writer... remove anything which you aren't using... if you don't have a blog, remove it from the re-writer
The re-writer processes all requests IN ORDER... so at the bottom I put this
"NotFound" won't appear in the browser address bar, but it will throw a genuine 404 error! I also have a 301 map for old .html files on the previous site, so I put a catch all rule in for .htm requests as well... Anything else will get dealt with by IIS.
Once I sort out canonical URLs, I'll have a completely SEO friendly website :)
My previous code was designed to 404 invalid requests, I have added the following onto it... This example is for product pages, it would have to be adjusted to whatever page you were working on..
//If it's invalid throw a 404 instead of re-direct
if (product == null || product.Deleted) Response.StatusCode = 404;