2

我将我的 python flask web 应用程序托管到了fluxflex 云托管(Apache、FastCGI)。因此,.htaccess 文件如下所示:

RewriteEngine On
AddHandler fcgid-script .fcgi
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /dispatch.fcgi/$1 [QSA,L]

有用。现在我想从 http 重定向到 https。我怎样才能做到这一点?在 .htaccess 末尾添加以下两行:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

但是,得到响应:错误 310 (net::ERR_TOO_MANY_REDIRECTS)。如果我在第一次重写之前插入这两行,响应是:找不到页面。

有人可以告诉我重定向到 https 的正确方法吗?

4

2 回答 2

2

在 fcgi 调用之前添加一个重定向到 https 的规则 此重定向必须仅在请求 http 时发生:

我的 .htaccess 看起来像这样:

Options -Indexes +FollowSymLinks +ExecCGI
<IfModule mod_fcgid.c>
        AddHandler cgi-script .fcgi
        RewriteEngine On

        #redirect to https if http, notice the L tag
        #it will break the rule processing and trigger the redirection        
        RewriteCond %{HTTPS} !=on
        RewriteRule ^(.*)$ https://${HTTP_HOST}/$1 [R,QSA,L]

        #handle the request (must be https at this point)
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ dispatch.fcgi/$1 [QSA,L]
</IfModule>
于 2014-03-18T15:31:38.967 回答
1

你想使用%{HTTPS}变量:

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
于 2012-04-11T02:50:24.523 回答