Ativando o HTTPS no via .htaccess

1

Atualmente, tenho um site em que estou usando o .htaccess para ativar o https em algumas seções do site:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (evaluate/purchase*)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI} 

Existem vários arquivos que começam com "purchase", que residem na pasta "evaluate", e todos eles precisam ser protegidos. Até agora, isso funciona.

Agora preciso proteger vários outros arquivos e diretórios, mas adicioná-los como uma condição de reescrita parece não funcionar:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (evaluate/purchase*)
RewriteCond %{REQUEST_URI} (another_dir/file.php)
RewriteCond %{REQUEST_URI} (please_secure_me.php)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI} 

Isso não está funcionando em nenhum 500 ou nada, apenas protege os arquivos na primeira condição. O que estou fazendo errado?

    
por Charles Chadwick 09.02.2010 / 20:39

2 respostas

2

IIRC, RewriteCond é uma condição AND.

"Se todas as condições coincidirem, o processamento continuará com a substituição da string de substituição pelo URL."

O que você está dizendo no momento é (HTTPS off E URI é isso E URI é isso E URI é isso), o que é incorreto, já que o URI não pode ser 3 coisas diferentes ao mesmo tempo!

Você deseja uma condição AND / OR combinada (HTTPS desativado E (URI é isso OU URI é isso OU URI é isso))

Tente duplicar sua regra:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (evaluate/purchase*)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI} 

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (another_dir/file.php)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI} 

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (please_secure_me.php)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI} 
    
por 09.02.2010 / 20:47
2

Na verdade, basta olhar os documentos do 2.2, você pode:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (evaluate/purchase*) [OR]
RewriteCond %{REQUEST_URI} (another_dir/file.php) [OR]
RewriteCond %{REQUEST_URI} (please_secure_me.php)
RewriteRule (.*) https://mydomain.com%{REQUEST_URI} 

Se funcionar, é uma solução muito mais elegante.

    
por 09.02.2010 / 20:51