Я использую следующие строки для моей конфигурации VirtualHost:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.xxx.yy
ServerAlias wwww.xxx.yy
DirectoryIndex app.php
DocumentRoot /var/www/xxx.yy/public_html/web
<Directory /var/www/xxx.yy/public_html/web>
AllowOverride None
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</Directory>
# Log file locations
LogLevel warn
ErrorLog /var/www/xxx.yy/log/error.log
CustomLog /var/www/xxx.yy/log/access.log combined
</VirtualHost>
Теперь я добавил сертификат SSL на свой сервер, и когда я звоню https: //xxx.yy браузер показывает мне веб / каталог, когда я набираю https: //xxx.yy/app.php Все отлично.
Как я могу добиться, чтобы RewriteRule также работал для https: //?
Или, я могу сказать, я всегда хочу Http: //xxx.yy/* использовать http и просто https: //xxx.yy/login а также https: //xxx.yy/payment использовать https?
Спасибо за вашу помощь!
Вам не хватает определения VirtualHost для SSL <VirtualHost *:443>
который должен содержать те же правила перезаписи, что и по умолчанию.
Лучший способ заставить HTTPS для некоторых страниц определить схемы маршрутов. Например.
secure:
path: /secure
defaults: { _controller: AcmeDemoBundle:Main:secure }
schemes: [https]
Или через access_control
вариант requires_channel:
access_control:
- { path: ^/secure, roles: ROLE_ADMIN, requires_channel: https }
Других решений пока нет …