2014-10-16 4 views
2

Я использую следующий .htaccess для своего сайта. Я перенаправляю все URL-адреса в index.php, если они не являются файлом, расположенным в URL-адресе.переписать htaccess на https с помощью маршрута

Options +FollowSymLinks 
IndexIgnore */* 
# Turn on the RewriteEngine 
RewriteEngine On 
# Rules 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

Таким образом http://website.com/user/user_name/ идет к index.php и http://website.com/css/style.css дает фактический файл CSS (если style.css существует).

Это отлично работает, только я хочу заставить https: // по URL-адресам, и я не могу заставить его работать. Любая помощь приветствуется.

Edit:

Используя ответ Йерун, я получил это работает со следующими .htaccess

Options +FollowSymLinks 
IndexIgnore */* 
# Turn on the RewriteEngine 
RewriteEngine On 
# Rules 
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,QSA] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

ответ

4

Как вы используете SSL CloudFlare, - я полагаю, гибкий SSL - вам нужно другое решение, хотя решение @ Fox правильно для «нормального» ssl-соединения.

Для CloudFlare вам нужно что-то вроде:

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,QSA] 

Также см CloudFlare's support article.

+0

Добавил это, и он сработал. Спасибо! Можете ли вы объяснить, почему cloudflare нуждается в этом другом обращении? –

+1

@KoenHendriks У вас нет реального подключения ssl к вашему серверу, только от клиента до CloudFlare. Соединение с CloudFlare на вашем сервере - обычное http-соединение, поэтому ваше исходное решение не работает. Однако CloudFlare добавляет заголовок http, чтобы вы могли проверить, запрашивал ли посетитель http или https-соединение, и это заголовок CloudFlare 'CF-Visitor', который вы видите в моем ответе. – jeroen

2

Попробуйте

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTPS} off 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
</IfModule> 
+0

Он отправляет меня на https, но это дает мне переадресацию. –

+0

@KoenHendriks Вы используете ssl для CloudFlare? – jeroen

+0

@jeroen да я –

Смежные вопросы