É possível reescrever algumas strings de consulta para HTTPS e manter todo o restante em HTTP?

3

Estou reescrevendo strings de consulta para URIs bonitos, exemplo: index.php?q=/en/contact se torna /en/contact e tudo funciona bem.

# httpd.conf

# HANDLE THE QUERY
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

É possível reescrever apenas consultas individuais para forçar https e forçar todo o resto para http ? Eu tentei muitas abordagens diferentes que normalmente terminam em loops infinitos. Eu poderia escrever um plugin para fazer isso em PHP, mas achei que seria mais eficiente lidar com isso no conf do servidor. Eu ficaria muito grato por qualquer conselho.

EDITAR: Para esclarecer, gostaria de poder reescrever o não SSL http://example.com/index.php?q=/en/contact para o SSL ativado https://example.com/en/contact e todas as consultas que não são /en/contact são gravadas para http://example.com/...

    
por Matt 01.07.2012 / 16:31

1 resposta

5

exemplo de 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 redireciona para https://domain/en/contact reescrita para index.php? q = en / contact

http://domain/en/fo reescrever para index.php? q = en / fo

https://domain/en/fo redireciona para http://domain/en/fo reescrita para index.php? q = en / fo

https://domain/en/contact reescrever para index.php? q = en / contact

    
por 01.07.2012 / 17:17