Можно ли переписать некоторые строки запроса в HTTPS и сохранить все остальное по HTTP?
Я переписываю строки запроса в красивые URI, например: index.php?q=/en/contact
становится /en/contact
и все работает хорошо..
# httpd.conf
# HANDLE THE QUERY
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Можно ли даже переписать отдельные запросы, чтобы заставить https
и заставить все остальное на http
? Я пробовал много разных подходов, которые обычно заканчиваются бесконечными циклами. Я мог бы написать плагин для этого в PHP, но подумал, что было бы более эффективно справиться с этим в conf сервера. Буду признателен за любой совет.
РЕДАКТИРОВАТЬ: Чтобы уточнить, я хотел бы иметь возможность переписать не SSL http://example.com/index.php?q=/en/contact
на SSL включен https://example.com/en/contact
и каждый запрос, который не /en/contact
написать в http://example.com/...
1 ответ
Пример htaccess:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^en/contact$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTPS} =on
RewriteRule !^en/contact$ http://%{SERVER_NAME}%{REQUEST_URI} [L,R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
http://domain/en/contact
перенаправить на https://domain/en/contact
переписать в index.php?q=en/contact
http://domain/en/fo
переписать в index.php?q=en/fo
https://domain/en/fo
перенаправить на http://domain/en/fo
переписать в index.php?q=en/fo
https://domain/en/contact
переписать в index.php?q=en/contact