Page is a not externally linkable
g1smd - 6:25 pm on Jan 10, 2013 (gmt 0)
The URL for the index pages should be example.com/ and example.com/laplume/ - that is what you should be linking to in the navigation links of your site as href="/" and href="/laplume/".
Mod_rewrite should detect those requests as ^$ and ^laplume/ and internally rewrite as appropriate.
Each of your individual rewrite rules are over-complicated and the ruleset itself doesn't enforce canonicalisation.
Rules 31-32 and 34-35 are your rewrites coded more efficiently.
Rules 32b+35b can replace 32a+35a and then allows both of your sites to have sub-folders.
Rules 33+36 deal with requests for images, stylesheets and scripts.
Rules 21 to 25 are the extra redirects you will need to prevent direct access to scripts and enforce canonicalisation.
Options +FollowSymLinks
RewriteEngine on
ErrorDocument 404 /error404.php
# 1. Rules that block malicious requests go here.
# 11. Block access
RewriteRule ^/(laplume/)?/cms/inc/(menu|list)\.php$ - [F]
# 2. External Redirects
# 21a. Redirect for index or index.php URL request in /laplume/cms/ folder
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /laplume/cms/([^/]+/)*index(\.php)?\ HTTP/
RewriteRule ^laplume/cms/(([^/]+/)*)index(\.php)?$ http://www.example.com/laplume/$1? [R=301,L]
# 21b. Redirect for folder URL request in /laplume/cms/ folder
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /laplume/cms/([^/]+/)*\ HTTP/
RewriteRule ^laplume/cms/(([^/]+/)*)$ http://www.example.com/laplume/$1? [R=301,L]
# 21c. Redirect for page or .php file URL request in /laplume/cms/ folder
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /laplume/cms/([^/]+/)*[^/.]+(\.php)?\ HTTP/
RewriteRule ^laplume/cms/(([^/]+/)*[^/.]+)(\.php)?$ http://www.example.com/laplume/$1? [R=301,L]
# 22a. Redirect for index or index.php URL request in /laplume/ folder
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /laplume/([^/]+/)*index(\.php)?\ HTTP/
RewriteRule ^laplume/(([^/]+/)*)index(\.php)?$ http://www.example.com/laplume/$1? [R=301,L]
# 22b. Redirect for .php file URL request in /laplume/ folder
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /laplume/([^/]+/)*[^/.]+\.php\ HTTP/
RewriteRule ^laplume/(([^/]+/)*[^/.]+)\.php$ http://www.example.com/laplume/$1? [R=301,L]
# 23a. Redirect for index or index.php URL request in /cms/ folder
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /cms/([^/]+/)*index(\.php)?\ HTTP/
RewriteRule ^cms/(([^/]+/)*)index(\.php)?$ http://www.example.com/$1? [R=301,L]
# 23b. Redirect for folder URL request in /cms/ folder
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /cms/([^/]+/)*\ HTTP/
RewriteRule ^cms/(([^/]+/)*)$ http://www.example.com/$1? [R=301,L]
# 23c. Redirect for page or .php file URL request in /cms/ folder
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /cms/([^/]+/)*[^/.]+(\.php)?\ HTTP/
RewriteRule ^cms/(([^/]+/)*[^/.]+)(\.php)?$ http://www.example.com/$1? [R=301,L]
# 24a. Redirect for index or index.php URL request in root folder
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index(\.php)?\ HTTP/
RewriteRule ^(([^/]+/)*)index(\.php)?$ http://www.example.com/$1? [R=301,L]
# 24b. Redirect for .php file URL request in root folder
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*[^/.]+\.php\ HTTP/
RewriteRule ^(([^/]+/)*[^/.]+)\.php$ http://www.example.com/$1? [R=301,L]
# 25. non-www/www canonicalisation redirect
RewriteCond %{HTTP_HOST} !^(www\.example\.com)?$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
# 3. Internal Rewrites
# 31. Rewrite example.com/laplume/ URL request
RewriteRule ^laplume/$ /laplume/cms/index.php [L]
# 32a. Rewrite example.com/laplume/pages URL requests
RewriteRule ^laplume/([a-z0-9-]+)$ /laplume/cms/$1.php [L]
# 32b. Rewrite example.com/laplume/FOLDER/pages URL requests
# RewriteRule ^laplume/(([^/]+/)*[a-z0-9-]+)$ /laplume/cms/$1.php [L]
# 33. Rewrite example.com/laplume/FOLDER/ file requests
RewriteRule ^laplume/(([^/]+/)*[a-z0-9-]+\.(css|jpg|js|png))$ /laplume/cms/$1 [L]
# 34. Rewrite example.com/ URL request (root)
RewriteRule ^$ /cms/index.php [L]
# 35a. Rewrite example.com/pages URL requests
RewriteRule ^([a-z0-9-]+)$ /cms/$1.php [L]
# 35b. Rewrite example.com/FOLDER/pages URL requests
# RewriteRule ^(([^/]+/)*[a-z0-9-]+)$ /cms/$1.php [L]
# 36. Rewrite example.com/FOLDER/ file requests
RewriteRule ^(([^/]+/)*[a-z0-9-]+\.(css|jpg|js|png))$ /cms/$1 [L]
Rules 32b+35b can replace 32a+35a and then allows both of your sites to have sub-folders.
Rules 33+36 deal with requests for images, stylesheets and scripts.
The above code is untested and might have a typo somewhere.
You should restrict your URLs to lower case and digits and hyphens; i.e. not allow underscore or upper case (I already changed the patterns).