After days of messing with this I finally figured it out. It seems I needed to have the following lines in the rewrite in order for it to work properly with the drupal rewrite already in place:
It now works so I wanted to post this for anyone else trying to get ssl working on only certain sections of their sites. Including the drupal rewrites already in .htaccess, my rewrites now look like this:
# REWRITE TO NONSSL UNLESS IT'S THE FORM, FORM EDIT/RESULTS PAGES # OR SUPPORTING FILES RewriteCond %{SERVER_PORT} ^443$ RewriteCond %{REQUEST_URI} !(contact/requestBook) RewriteCond %{REQUEST_URI} !(node/387/*) RewriteCond %{REQUEST_URI} !(.*css) RewriteCond %{REQUEST_URI} !(.*js) RewriteCond %{REQUEST_URI} !(.*gif) RewriteCond %{REQUEST_URI} !(.*png) RewriteCond %{REQUEST_URI} !(.*jpg) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ http://%%7BSERVER_NAME%7D/$1 [R=301,L]
# REWRITE TO SSL IF IT'S THIS FORM RewriteCond %{SERVER_PORT} !^443$ RewriteCond %{REQUEST_URI} contact/requestBook RewriteRule ^(.*)$ https://%%7BSERVER_NAME%7D/$1 [R=301,L]
# DRUPAL REWRITE RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
.s
sander-martijn wrote:
Hi guys,
I'm still having an http to https and back issue with drupal, but I've narrowed it down to a single L and wondering if anyone has any suggestions now. The L stands for "Last Rule" - if it's there it behaves half correctly and if it's not there it behaves half correctly - in the opposite way.
# REWRITE TO SSL if contact/requestBook # WORKS AS EXPECTED ON IT'S OWN RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(contact/requestBook)$ https://%%7BSERVER_NAME%7D/$1 [R=301,L]
# REWRITE TO NON-SSL if not contact/requestBook # also ignore if a supporting file or else the page will display a broken lock # IF [R=301,L] then any other page on https redirects to non-ssl fine but contact/requestBook redirects to non-ssl non-pretty url # http://s24863.gridserver.com/index.php?q=contact/requestBook # IF you remove the L so it's [R=301] then contact/requestBook redirects fine but other pages stay on https and report Page not found RewriteCond %{SERVER_PORT} ^443$ RewriteCond %{REQUEST_URI} !(contact/requestBook) RewriteCond %{REQUEST_URI} !(.*css) RewriteCond %{REQUEST_URI} !(.*js) RewriteCond %{REQUEST_URI} !(.*jpg) RewriteCond %{REQUEST_URI} !(.*gif) RewriteCond %{REQUEST_URI} !(.*ico) RewriteCond %{REQUEST_URI} !(.*png) RewriteRule ^(.*)$ http://%%7BSERVER_NAME%7D/$1 [R=301] # Alternate: RewriteRule ^(.*)$ http://%%7BSERVER_NAME%7D/$1 [R=301,L]
# DRUPAL REWRITE RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Thanks, sander