У меня есть сайт на Symfony3. Хочу заставить для всех маршрутов https.
Я добавляю это в свой файл .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Главная страница работает нормально, пользователь перенаправляется на версию с https, но на любой подстранице, где в ссылке есть символ "/" У меня проблема "Ошибка: бесконечный цикл"
Например, это нормально работает:
https://www.example.com/subpage1
Но это генерирует бесконечный цикл ошибок: https://www.example.com/subpage1/subpage2
Когда я удаляю принудительно https в .htaccess, все работает нормально ...





Избегайте использования .htaccess для подобных вещей.
Если вы не планируете размещать только часть вашего сайта в https, сделайте это с помощью файла конфигурации vhost.
Вот полный пример для Symfony 3 с Apache 2
<VirtualHost *:80>
ServerName www.example.com
Redirect / https://www.example.com
</VirtualHost>
<VirtualHost _default_:443>
ServerName www.example.com
DocumentRoot /var/www/www.example.com/web
<Directory /var/www/www.example.com/web>
AllowOverride None
Order Allow,Deny
Allow from All
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
<Directory /var/www/www.example.com/web/bundles>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
SSLCertificateFile /etc/letsencrypt/live/www.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
ErrorLog /var/www/www.example.com/var/logs/error.log
CustomLog /var/www/www.example.com/var/logs/access.log combined
</VirtualHost>