Apache不会将HTTP重定向到HTTPS

时间:2016-07-14 15:25:36

标签: ruby-on-rails apache .htaccess passenger

我正在运行Rails,Phusion-Passenger。

我已尝试过在堆栈溢出时发现的任何内容,但可能是源代码过时了。 我的ssl工作和所有。我不能让它将http重定向到https。我收到错误请求400 错误,说我正在尝试使用普通的http访问https网站。

以下是我的某个网站的配置。

<VirtualHost *:4000>
    ServerName beast.xxxxx.com

    # Tell Apache and Passenger where your app's 'public' directory is
    DocumentRoot /var/www/cava/public

    PassengerRuby /home/tasos/.rvm/gems/ruby-2.3.0@cava/wrappers/ruby

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

  SSLEngine On
    SSLProtocol all -SSLv2 -SSLv3
    SSLCertificateFile    /etc/apache2/ssl/2_beast.xxxxx.com.crt
    SSLCertificateKeyFile /etc/apache2/ssl/xxxxx_nopass.key
    SSLCertificateChainFile /etc/apache2/ssl/1_root_bundle.crt    



    # Relax Apache security settings
    <Directory /var/www/cava/public>
      Allow from all
      #Options -MultiViews
      # Uncomment this if you're on Apache >= 2.4:
      #Require all granted
    </Directory>
</VirtualHost>

重写已启用,我很确定。 我已经尝试了多个代码,你能建议我为Rewrite函数运行代码吗?

是否需要修改我的.htaccess文件或类似内容?我在很多地方都看过它,但我也读过这个文件不应再被修改了。

我想听听任何建议。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

此:

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

这是一个仅限内部的&#34;重写,并且新的URL永远不会显示给客户端,因为您没有指定它应该是客户端重定向。

尝试

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
                                                    ^^^^^^^

代替。 [R...]告诉mod_rewrite将新url作为正式的http重定向发送到客户端。