Pergunta

O que eu quero:

Para redirecionamento 301 /file_new.pdf para / New.pdf arquivo (% 20 aka espaço entre arquivo e novo)

Estou ciente de que:

  • posso contar com RewriteRule 301, que usa mod_rewrite, usando uma solução de esta discussão: @ mod_rewrite com espaços no urls
  • Eu posso mudar o nome do arquivo para não incluir espaços e substituí-los com traços / sublinhados

No entanto, eu pessoalmente estou curioso para saber como seria fazer isso. Aqui está o que eu tenho até agora:

Redirect 301 /file_new.pdf http://sitename.com/file\ new.pdf

O analisador de arquivo conf lança um erro quando invoco a configtest:

Redirect leva dois ou três argumentos, um status opcional, então documentar a ser redirecionada e URL de destino

Editar: Aparentemente, o mod_rewrite nem redirecionamento 301 métodos estão trabalhando para mim, possivelmente porque por qualquer razão que não está aplicando porque o arquivo realmente existe nesse local.

<VirtualHost *:80>
DocumentRoot /www/sitename_com
ServerName site.local
Options -MultiViews

RewriteEngine on
Redirect 301 /pdf/file_new.pdf http://site.local/pdf/file%20new.pdf
RewriteRule ^/pdf/file_new.pdf http://site.local/pdf/file\ new.pdf
RewriteLog "/www/rewrite.log"
</VirtualHost>

Em rewrite.log, ele tenta corresponder ao padrão de cada respectivo uri / http pedido .. Eu acho que algo está tomando o controle antes mesmo aos mod_alias / material mod_rewrite.

Assim, para resumir, ele vai diretamente para file_new.pdf no navegador e não 301. Eu sou positivo que alias e rewrite estão habilitados. Minha versão apache é 2.2.

Foi útil?

Solução

o Redirect é realmente parte do mod_alias, não mod_rewrite. Fico feliz por% 20 trabalhou e você também pode usar aspas para dizer apache que o caminho que inclui o espaço é a URL para redirecionar para e não dois itens separados:

Redirect 301 /pdf/file_new.pdf "http://site.local/pdf/file new.pdf"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top