Pergunta

Eu preciso emitir um redirecionamento, usando .htaccess, a uma URL com um fragmento (também conhecido como uma âncora), mas está escapando automaticamente o #.

No momento, eu quero um fragmento codificado, mas para o bem dos outros, se você sabe como levá-la a partir do URL também que seria bom.

Idealmente, eu deveria ser capaz de usar QSA também.

Por exemplo:

http://www.exameple.com/test?foo=bar

deve tornar-se

1) http://www.example.com/?foo=bar#MYVALUE

ou tomar o fragmento a partir da url:

2) http://www.example.com/?foo=bar#test

O meu (não-trabalho) parece um código como este:

RewriteRule /test http://www.example.com/#MYVALE [R,QSA]
Foi útil?

Solução

Eu acho que eu tenho que descobri ...

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} /test
RewriteRule ^test/?(.*)$ $1 [C]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1?%{QUERY_STRING}#MYVALUE [NE,L,R]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} /test
RewriteRule ^test/?(.*)$ $1 [C]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1?%{QUERY_STRING}#MYVALUE [NE,L,R]

É um pouco pobre ter que fazê-lo uma vez para HTTP e novamente para HTTPS -. Vou ver se eu posso encontrar uma maneira de contornar isso

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top