I think i narrowed down the issue.
Joomla core SEF allows urls to display with or without the suffix. Even if you set "use suffix" to true in your global config, you can still visit the page using just a slash (/) instead of .html
Example:
yourdomain.com/page1.html
will produce same result as
yourdomain.com/page1/
My scenario makes this behavior undesirable. On the old site, the rewrite rules removed .html from any page, replacing them with a slash (/). Every page indexed or bookmarked by users of the old site use this url format (domain.com/page1/).
While most of their old bookmarks, and the engine listings will still work (due to this "flaw" in SEF), this isn't best practice and can lead to duplication of results IMO.
What I can consider a bug is, if a menu item alias is the same as an old page name, and if your lucky to get the redirect working, none of the pages under the menu item will work!
Example:
joomla menu item alias: somename
page under this menu: anothername
OLD page name: somename
(yourdomain.com/somename/)
Redirect 301 /somename/
yourdomain.com/somename.html
wont work!^
and if your luck enough to get it to work (say forcing it with an htaccess 301)
then this WONT work:
yourdomain.com/somename/anothername.html
... and anything that lives under menu item /somename/ will 404!
I tried an alternative route using a rewrite rule:
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule ^(.*)$ /$1.html [R,L]
... but my syntax is a bit wrong i think because the resulting url is:
yourdomain.com/somename/.html
Not sure a new rewrite rule is best option, but it seemed like the easiest at the time.
Surely this behavior has been seen before?
<><>
My jos_redj table is currently blank (I removed the rules in my trouble shooting process and eventually disabled your plugin in place of manual 301's in htaccess, until I deem it will work for what i need).
<><>
A possible work around is setting "use page suffix" to False/No and manually entering the .html suffix with every menu item alias.
Surely there's a better way.
Please advise.