Take the 2-minute tour ×
Webmasters Stack Exchange is a question and answer site for pro webmasters. It's 100% free, no registration required.

Hi I have configured Virtual host on apache with .htaccess authentication with SSL. It's working fine when I typed url https://www.example.com:9004/test.php but when I typed http://www.example.com:9004/test.php I am getting this error:

Bad Request

Your browser sent a request that this server could not understand.
Reason: You're speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
Hint: https://www.example.com/  

My httpd.conf file look like this:

 Listen 9004
<VirtualHost *:9004>
    ServerAdmin root@localhost
    DocumentRoot /mnt/work/httpd
    <Directory "/mnt/work/httpd">
    Options FollowSymLinks
     AllowOverride AuthConfig
    </Directory>
  SSLEngine On
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
  SSLCertificateKeyFile /mnt/work/httpd/www.example.com.key
  SSLCertificateFile /mnt/work/httpd/www.example.com.crt
#RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com:9006%{REQUEST_URI}
    ServerName www.example.com
    ErrorLog "/mnt/work/log/error_log"
    CustomLog "/mnt/work/log/access_log" combined
</VirtualHost>

And my /etc/httpd/conf.d/ssl.conf file is:

LoadModule ssl_module modules/mod_ssl.so

#
# When we also provide SSL we have to listen to the
# the HTTPS port in addition.
#
Listen 9006

And Mmy .htaccess file is:

AuthType Digest
AuthName "Protected"
AuthDigestProvider file
AuthGroupFile /dev/null
AuthUserFile /mnt/work/httpd/digest_auth
Require user johan

What should I do so that when I hit http:/www.example.com:9004/test.php it will automatically redirect to https://www.example.com:9004/test.php.

share|improve this question
add comment

2 Answers

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Should do the trick.

share|improve this answer
1  
Hi Its not Working Same error Occurred Bad Request... –  Akki May 16 '13 at 9:25
add comment

It seems you want 9004 for https; 9006 for http; You should redirect http connection on 9004 port to https connection on same 9004 port.

However your config redirects http://example.com:9004 to https://example.com:9006 which does not make much sense since 9006 port is for http. Just replace 9006 by 9004 in your RewriteRule.

Some additional info on url redirection: http://wiki.apache.org/httpd/RedirectSSL

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.