2012-04-11 3 views
1

Я разместил мое веб-приложение для флекса python для облачного хостинга fluxflex (Apache, FastCGI). Итак, файл .htaccess выглядит следующим образом:Apache .htaccess, проблема с перезаписи url

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?

ответ

1

Вы хотите использовать %{HTTPS} переменную:

RewriteCond %{HTTPS} off 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 
1

добавить правило для перенаправления HTTPS до FCGI вызова Это перенаправление должно происходить только при 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> 
Смежные вопросы