Mod Rewrite para cgi-bin

1

Então, eu quero reescrever a seguinte estrutura de URL

    mysite.com/cgi-bin/shop/shop.cgi/ 

para

    mysite.com/+

Eu tenho isso como regra e funciona, mas isso não força a URL a imprimir no navegador quando você ainda aponta para o URL antigo. Então eu tenho conteúdo duplicado. Eu tentei adicionar [R = 302] a ele e não funciona. [R = 302] faz com que imprima a estrutura de url antiga (/cgi-bin/shop/shop.cgi/%). Alguma ideia?

    RewriteRule ^\+([^*]+)/?$ /cgi-bin/shop/shop.cgi/$1

Qualquer ajuda seria muito apreciada!

    
por user156466 28.01.2013 / 20:04

1 resposta

1

Você tem a regra de reescrita distorcida.

RewriteRule ^\+([^*]+)/?$ /cgi-bin/shop/shop.cgi/$1

significa que quando o cliente navega até a página mysite.com/+, seu servidor agirá como se tivesse escrito mysite.com/cgi-bin/shop/shop.cgi/ .

Se você quiser que uma reescrita funcione na direção oposta, será necessário trocar a expressão e o alvo, assim:

RewriteRule /cgi-bin/shop/shop.cgi/(.*) /\+$1 [L,R]

Isso significa que, se o cliente navegar até mysite.com/cgi-bin/shop/shop.cgi/FOO , ele receberá um redirecionamento para mysite.com/+FOO

Por favor, note que não é uma boa idéia usar a regra atual e esta ao mesmo tempo, já que corre o risco de causar um loop infinito, pelo menos se você estiver usando redirecionamento, já que o redirecionamento causará um novo pedido que será novamente analisado pelas regras de redirecionamento.

    
por 29.01.2013 / 09:49