Я переписываю строки запроса на красивые 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, но подумал, что будет более эффективно обрабатывать это в конфигурации сервера. Буду рад любому совету.
РЕДАКТИРОВАТЬ: Чтобы уточнить, я бы хотел переписать не SSL http://example.com/index.php?q=/en/contact
к SSL включен https://example.com/en/contact
и каждый запрос, который не /en/contact
писать на http://example.com/...
Пример 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