Pergunta

if( count( $_POST ) < 1 ) {
    // determine if this was a secure request - we use a non standard HTTPS port so the SERVER_HTTPS_PORT define should always be used in place of 443
    $protocol = $_SERVER['SERVER_PORT'] == SERVER_HTTPS_PORT ? 'https' : 'http';
    header( "HTTP/1.0 301 Moved Permanently" ); 
    header( "Status: 301" ); // this is for chrome compliance
    header( "Location: $protocol://".CLIENT_DOMAIN."{$_SERVER['REQUEST_URI']}" );       
    session_write_close();
    exit;
}

Pode esta funcionalidade ser reescrita com regras .htaccess?

Logic:

Se não for um pedido POST, redirecionamento para páginas equivalentes com string de consulta inteira através da emissão de 301 cabeçalho e status, mantendo protocolo.

Foi útil?

Solução

Tente isto:

RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{SERVER_PORT}s ^443(s)|.*
RewriteRule ^foo/bar$ http%1://www.example.com%{REQUEST_URI} [L,R=301]

Não basta substituir 443 pelo seu valor SERVER_HTTPS_PORT e www.example.com pelo seu valor CLIENT_DOMAIN.

Outras dicas

Isso deve funcionar para você (substitua www.google.com com o seu CLIENT_DOMAIN).

RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_METHOD} !^POST$ [NC]
RewriteRule ^(.*)$ http://www.google.com/$1 [L,QSA,R=301]
RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{REQUEST_METHOD} !^POST$ [NC]
RewriteRule ^(.*)$ https://www.google.com/$1 [L,QSA,R=301]

lookink a documentação do Apache mod_rewrite , há pode ser uma maneira, usando %{REQUEST_METHOD} em uma condição RewriteCond; algo como isso poderia fazer o truque:

RewriteCond %{REQUEST_METHOD} !=POST

seguido, é claro, pela RewriteRule necessário para redirecionamento tudo para a página non-POST.

Eu não tenho nenhuma maneira de testar agora, então isso pode não ser perfeito, mas algo como isto talvez pudesse fazer o truque - ou, pelo menos, guiá-lo para a solução:

RewriteRule ^(.*)$ $1 [QSA,R=301,L]

A idéia beeing a

  • jogo tudo
  • redirecionamento para o que foi combinado
  • manter a seqüência de consulta (bandeira QSA)
  • e redirecionar com um código de 301
  • e parar por aí
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top