[FUG-BR] [OFF] Estrutura de armazenamento de arquivos e redirecionamento no Apache

Wanderson Tinti wanderson em bsd.com.br
Quinta Outubro 8 10:42:52 BRT 2009


2009/10/8 "Fábio Jr." <fjuniorlista em gmail.com>

>   Obrigado pela resposta Wanderson,
>   Posso ter me expressado mal, mas esse não era o foco das minhas
>   perguntas,
>   O AliasMatch do Apache não consegue extrair dados de uma string.
>   Ex.:
>   URL: [1]http://servidor.foo.bar/123852.jpg
>   Eu preciso q quando alguem fizer esta requisição ao apache, ele
>   redirecione para o diretório /arquivos/imagens/8/52/123852.jpg. Usando
>   expressões regulares do AliasMatch, não consigo pegar o caractere 8 do
>   último campo, e depois pegar os caracteres 52, mas apenas a palavra
>   inteira. Preciso que seja algo dinâmico pois ficaria inviável criar um
>   redirecionamento para cada pasta.
>   Esta estratégia de reorganização de diretórios tem como foco
>   performance de disco. As alterações do Apache são apenas reflexos desta
>   estratégia. Escolhi o Apache depois de realizar alguns testes entre o
>   lighttpd e ele, e perceber que mesmo o lighttpd sendo mais leve, o
>   Apache é um aplicativo muito mais completo em questão de módulos
>   nativos.
>   Meu problema maior é com a indexação destes arquivos pelo SO, e também
>   as rotinas de backup, já que o storage onde estes arquivos são
>   hospedados fica nos EUA.
>   []s
>       Fábio Jr.
>   Wanderson Tinti escreveu:
>
> 2009/10/7 "Fábio Jr." [2]<fjuniorlista em gmail.com>
>
>
>
>
Olá Fábia, bom dia.

Eu compreendir sua pergunta. E, como disse, é possível sim. Em um teste
rápido que acabei de fazer conseguir obter o resultado que você procura. Vou
tentar explicar como ficou meu ambiente.

Obs: A unica diferença é que estou usando arquivos .txt e não .jpg.

Diretórios dos arquivos:
/var/www/imagens/4/56/123456.txt
/var/www/imagens/8/91/123891.txt
/var/www/imagens/8/91/456891.txt

Obs: Em cada um desses arquivos eu escrevi algo para ter certeza do
funcionamento, além é claro de consultar os logs do Apache.

Agora a configuração do AliasMatch no Apache:

AliasMatch ^/...([0-9-_.]{1})/?([0-9-_.]{2})/?(.*) /var/www/imagens/$1/$2/$0


Então, quando eu acesso http://www.site.com/123456.txt sou levado ao arquivo
/var/www/imagens/4/56/123456.txt. O mesmo server para os outros arquivos.

Não sou conhecedor de expressões regulares, mas isso deve ser o que você
procura.

Nota: Estou supondo que seus arquivos de imagens tenham somente seis
caracteres como parte do nome(6 números). Por quê? No inicio da string eu
falo para ser pego os 3 primeiros caracteres ( ^/... ). Depois pego o
primeiro número, mais os dois últimos números, e para finalizar pego a
extensão do arquivo( .*). Você pode trocar por ( .jpg). Depois é só montar o
caminho para os arquivos usando as variáveis com os valores extraídos.

Se eu falei alguma besteira peso que me corrija, por gentileza.


É isso que você procura fazer?



Atenciosamente,
Wanderson Tinti


Mais detalhes sobre a lista de discussão freebsd