Можно ли переписать некоторые строки запроса в 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

Другие вопросы по тегам