Eu estou tentando obter um drupal 7 instalar para redirecionartrês páginas para https e forçar todo o resto de volta para http. Isoladamente, a primeira regra de reescrita aqui funciona. Com ambos habilitados, nada funciona e tudo redireciona de volta para /index.php
# Turn SSL on for checkout except for checkout, signup/login and user/login
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^(/checkout)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(/signup/login)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(/user/login)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
# Turn SSL off everything but checkout, signup/login and user/login
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(checkout|signup/login|user/login) [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
Respostas:
0 para resposta № 1Isso parece correto e as regras funcionam para mim. Desde a primeira regra funciona eu vou assumir RewriteEngine on
está em algum lugar acima dessas regras. Existem outras regras em seus arquivos htaccess? Poderia ser outra coisa causando o problema.
Eu tentei as seguintes regras e sou redirecionado como esperado por ambos. A ausência da regra HTTPS não deve fazer diferença.
RewriteEngine on
# Turn SSL on for checkout except for checkout, signup/login and user/login
RewriteCond %{REQUEST_URI} ^(/checkout)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(/signup/login)$ [NC,OR]
RewriteCond %{REQUEST_URI} ^(/user/login)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/ssl/$1 [R=301,L]
# Turn SSL off everything but checkout, signup/login and user/login
RewriteCond %{REQUEST_URI} !(checkout|signup/login|user/login) [NC]
RewriteRule ^ssl/(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
Eu configuro esses arquivos para testar com:
- público/
- checkout (conteúdo: checkout)
- foobar (conteúdo: foobar)
- inscrever-se/
- login (conteúdo: inscrição / login)
- do utilizador/
- login (conteúdo: usuário / login)
- ssl /
- checkout (conteúdo: checkout ssl)
- foobar (conteúdo: ssl foobar)
- inscrever-se/
- login (conteúdo: inscrição / login SSL)
- do utilizador/
- login (conteúdo: ssl user / login)
Você pode tentar estas regras e ver que elas funcionam como esperado:
$ curl -L http://samhuri.net/checkout
ssl checkout
$ curl -L http://samhuri.net/ssl/checkout
ssl checkout
$ curl -L http://samhuri.net/foobar
foobar
$ curl -L http://samhuri.net/ssl/foobar
foobar
Passar curl
a -i
sinalizar para ver cabeçalhos e códigos de status.
Então eu suspeito que algo está errado. Você tem outras regras para redirecionar para ou de https?