mod_rewrite redirecionar de SSL para HTTP não funciona

2

Eu quero usar mod_rewrite para garantir que certas páginas sejam exibidas com SSL e todas as outras normalmente, mas estou tendo problemas para fazê-lo funcionar

Isso funciona (redirecionar para SSL quando o pedido for para usuários ou carrinho)

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} users [OR]
RewriteCond %{REQUEST_URI} cart
RewriteRule ^(.*)$ https://secure.host.tld/$1 [R,L]

Assim, para acomodar um usuário a não continuar navegando no site com o ssl, ao solicitar outros uris, achei o abaixo, mas não funciona: (quando a porta é 443 e o uri não é um dos uris que precisam para ser atendido pelo ssl, redirecionar de volta ao host normal)

RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} !^/users [OR]
RewriteCond %{REQUEST_URI} !group
RewriteRule ^/?(users|groups)(.*)$ http://host.tld/$1 [R,L]

Alguma ajuda?

Obrigado

    
por Thomas 20.03.2010 / 17:29

2 respostas

2

Seu código:

RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} !^/users [OR]
RewriteCond %{REQUEST_URI} !group
RewriteRule ^/?(users|groups)(.*)$ http://host.tld/$1 [R,L]

Se seguro e não usuários ou grupo ... acho que você quer se seguro e não usuários e não grupo. Mas, então, você reescreve APENAS usuários e grupos para http: o que parece ser o contrário do que você deseja.

Então, você poderia fazer:

RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} !^/(users|group)
RewriteRule ^(.*)$ http://host.tld/$1 [R,L]

Como você eliminou usuários / grupo em suas regras, sua regra de reescrita nunca a veria.

No entanto, em vez de usar SERVER_PORT, considere:

RewriteCond %{HTTPS} off

e

RewriteCond %{HTTPS} on

Para tornar a depuração um pouco mais fácil,

RewriteLog /tmp/rewritelog
RewriteLogLevel 9

e observe esse arquivo de registro quando fizer solicitações, e você poderá ter uma ideia melhor do que está acontecendo.

    
por 23.03.2010 / 20:29
1

Isso não parece uma boa maneira de usar o SSL. Pode haver uma maneira de mexer com o obter pedido para evitar essa reescrita completamente. Por que você deve usar reescrever para obter essa funcionalidade.

talvez eu esteja errado, mas esse código parece problemático.

faixa SSL! link

    
por 20.03.2010 / 17:38