Reescrevendo um URL de download, mas a caixa de diálogo "salvar -as" mostra o URL original

1

Eu tenho a seguinte diretiva mod_rewrite no meu arquivo de configuração lighttpd :

url.rewrite-once = (
  "foo.*$" => "static/foo.pdf",
)

Gostaria de distribuir URLs como este: http://<server>/foo/r=ca2b912 (ou similar), de modo que eu possa rastrear a origem do link no log de acesso http.

Quando eu digito http://<server>/foo/r=131ab42 , no entanto, a caixa de diálogo "salvar como" é mostrada e está propondo nomear o arquivo r=131ab42 (pelo menos quando estiver usando o firefox). Eu gostaria que ele propusesse foo.pdf como nome do arquivo para salvar. Isso deve funcionar independentemente da ferramenta que acessa a URL (por exemplo, wget, IE, etc., todos devem salvar o arquivo como foo.pdf ).

Como posso conseguir isso? Percebi que o Firefox corrige o nome do arquivo ao recarregar o URL.

Por favor note : esta é a primeira vez que quero usar uma regra de reescrita. Tentei encontrar a resposta, mas não consegui.

    
por Sebastian 28.08.2014 / 14:29

2 respostas

2

Você só precisa prefixar sua string r=ca92b32 com ? (ex: http://<server>/foo/?r=ca93b32 )

A string será considerada como um parâmetro em vez de um nome de arquivo e não será tratada como um nome de arquivo.

    
por 16.09.2014 / 12:12
2

reescrita é uma operação interna do servidor; o usuário não vê o resultado (a menos que você o exponha manualmente de alguma forma).

Você pode experimentar o cabeçalho Content-Disposition ; mas a melhor maneira é corrigir seus URLs (ou seja, ter .../foo.pdf desde o início). Você poderia usar regras de redirecionamento para a migração.

    
por 28.08.2014 / 22:02