Я использую следующий .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
Добавил это, и он сработал. Спасибо! Можете ли вы объяснить, почему cloudflare нуждается в этом другом обращении? –
@KoenHendriks У вас нет реального подключения ssl к вашему серверу, только от клиента до CloudFlare. Соединение с CloudFlare на вашем сервере - обычное http-соединение, поэтому ваше исходное решение не работает. Однако CloudFlare добавляет заголовок http, чтобы вы могли проверить, запрашивал ли посетитель http или https-соединение, и это заголовок CloudFlare 'CF-Visitor', который вы видите в моем ответе. – jeroen