Я использую следующий .htaccess для моего сайта. Я перенаправляю все URL в index.php, если они не являются файлами, расположенными по ссылке.
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-адресах, и я не могу заставить его работать. Любая помощь с благодарностью.
Редактировать:
Используя ответ Jeroen, я получил его, работая со следующим .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
Поскольку вы используете ssl CloudFlare — я предполагаю, что Flexible SSL — вам нужно другое решение, хотя решение @ Fox является правильным для «нормального» ssl-соединения.
Для CloudFlare вам нужно что-то вроде:
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"'
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L,QSA]
Также см Статья поддержки CloudFlare.
Попробуй это
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>