Evitando o loop de redirecionamento com reescrita do parâmetro .htaccess

1

Deixe-me começar dizendo que não sou especialista em .htaccess ou Apache. Mas tenho a necessidade de acrescentar um termo com hash ao final de uma consulta de URL.

Por exemplo:

http://www.example.com/?query_string=stuff

torna-se

http://www.example.com/?query_string=stuff#otherstuff

Estou usando a seguinte regra (arquivo inteiro .htaccess):

RewriteCond %{QUERY_STRING} ppw_confirm=(.*)
RewriteRule ^/?(.*) http://www.example.com/?ppw_confirm=%1#go [NE,L]

O PROBLEMA

Depois de adicionar #go ao final da string de parâmetros, o arquivo .htaccess ainda lê a consulta? ppw_confirm =. Em seguida, ele tenta executar um segundo redirecionamento após o qual um loop infinito segue.

Eu tenho procurado por horas sem sorte. Basicamente, eu preciso de uma maneira de evitar que o .htaccess reescreva duas vezes para evitar esse loop infinito.

Aberto a todas e quaisquer sugestões:)

Qualquer ajuda é muito apreciada. Obrigado antecipadamente!

    
por Brian 20.06.2013 / 02:49

1 resposta

0

A parte #go não é algo com que você possa trabalhar em regras de reescrita; é do lado do cliente, não é enviado para o servidor ao fazer uma solicitação para esse recurso, portanto, você não pode tomar decisões em regras com base nele.

Talvez como parte do redirecionamento, adicione uma variável adicional à string de consulta, procure essa variável e impeça o redirecionamento quando ela estiver presente?

RewriteCond %{QUERY_STRING} ppw_confirm=(.*)
RewriteCond %{QUERY_STRING} !r=1
RewriteRule ^/?(.*) http://www.example.com/?ppw_confirm=%1&r=1#go [NE,L]
    
por 20.06.2013 / 08:45