RewriteRule só funciona se a pasta não existir

2

Em vez de acessar diretamente as imagens, preciso usar o RewriteRule para redirecionar um conjunto de imagens a serem acessadas por meio de um script.

Um RewriteRule é usado para isso:

RewriteRule ^Images/test/([^.\/]*)\.png /image.php?file=$1.png [R=301,L]

Espero que isso mude:

www.example.com/Images/test/123.png

em

www.example.com/image.php?file=123.png

Mas isso não acontece.

Mas se eu alterar o RewriteRule para o seguinte:

RewriteRule ^Images2/test/([^.\/]*)\.png /image.php?file=$1.png [R=301,L]

Os seguintes trabalhos:

www.example.com/Images2/test/123.png

em

www.example.com/image.php?file=123.png

A diferença é que existem imagens enquanto o Images2 não existe. É possível trabalhar com uma pasta existente.

Alguma ajuda sobre como obter o exemplo principal?

Atualizar : Depois de analisar cuidadosamente a documentação do mod_rewrite , encontrei o seguinte:

... Note que mod_rewrite tenta adivinhar se você especificou um caminho de sistema de arquivos ou um caminho de URL verificando se o primeiro segmento do caminho existe na raiz do sistema de arquivos ...

Parece que, se o caminho for interpretado como um caminho de URL, ele funcionará e, se for interpretado como um caminho do sistema de arquivos, ele falhará.

    
por Badran 24.01.2013 / 16:46

2 respostas

1

tente com isso

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$0 [L]

sorte !!

    
por 25.01.2013 / 14:40
0

Tente alterar o início da sua âncora para ^/ , apenas um palpite. Eu pessoalmente não usei RewriteRules ancorados no início da linha que não começam com uma barra, mas eu posso ver como isso pode criar alguma estranheza dentro do mecanismo.

    
por 24.01.2013 / 18:28