.htaccess 301 redirect for all https to http EXCEPT ONE PAGE
Apache/2.2.6 (Win32) mod_ssl/2.2.8 OpenSSL/0.9.8g PHP/5.2.6
I've tested it locally, all use cases seem to work fine. If you have further questions, feel free to ask.
# Rewrite Rules for example.comRewriteEngine OnRewriteBase /# Redirect from example.com to www.example.comRewriteCond %{HTTP_HOST} ^example\.com [NC]RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]# Turn SSL on for paymentsRewriteCond %{HTTPS} offRewriteCond %{SCRIPT_FILENAME} \/payments\.php [NC]RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]# Turn SSL off everything but paymentsRewriteCond %{HTTPS} onRewriteCond %{SCRIPT_FILENAME} !\/payments\.php [NC]RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
IMPORTANT! When the user navigates from any https page with www to any https page without www, he's asked to accept security certificate of your non-www domain.
For example (YES = request to accept the certificate, NO - opposite):
1) https://www.asdf.com/payments.php - YES (www.asdf.com)2) http://www.asdf.com/phpinfo.php - NO3) https://asdf.com/phpinfo.php - YES (asdf.com)4) https://www.asdf.com/phpinfo.php - NO
I tried to reorder rules in .htaccess with no success. If anyone finds a better solution, it'll be highly appreciated.
in addition to william's great solution, you can negate request uri somewhere before https rewriterule
RewriteCond %{REQUEST_URI} !^/?payments\.php
That was a nice post and it seems to redirect to http properly but i want some thing like the following
RewriteCond %{HTTP_HOST} ^site\.comRewriteRule (.*) http://www.site.com/$1 [R=301,L]#RewriteCond %{SERVER_PORT} !^443$#RewriteRule ^products https://www.site.com/products/ [R=301,L]# Disable SSL on pages other than payments.phpRewriteCond %{HTTPS} onRewriteCond %{REQUEST_URI} !^productsRewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]# Require SSL on payments.phpRewriteCond %{HTTPS} !onRewriteCond %{REQUEST_URI} ^products\/?$RewriteRule ^(.*)$ https://www.site.com/$1 [R=301,L]RewriteCond $1 !^(index\.php|images|js|css|static|img|payment|robots\.txt|blank.gif)RewriteRule ^(.*)$ index.php/$1 [L]
my url is http://www.sitename.com and the trailing forward slash is optionalwhat i need is if there is no text like products in the url then it needs to he http://and if there is a string products in the uri then it should be https://
how to do that...when i tried it is going to a loop... redirection loop.
i am using codeigniter frame work and i have removed index.php from the url.
so if something like http://sitename.com/products occurred then i want it to be https://sitename.com/products
and if there no products in the url then it should redirect to http://