mod-rewrite não está funcionando corretamente para arquivos em sub-diretórios

1

Estou usando o seguinte URL de reconfiguração para obter URLs mais bonitas:

RewriteRule (\d+)/(.+) $2?companyId=$1  [NC,L,B,QSA,NE]

O url /invoices.php?companyId=123 pode, por exemplo, ser expresso como /123/invoices.php . Eu testei e funciona bem.

O problema é que alguns dos meus arquivos php fazem referência a imagens e javascript por urls relativos, exemplo js/jquery.js . Eu pensei que esses arquivos também seriam cobertos pelo meu URL de reescrita, o que é bem genérico, mas aparentemente isso não acontece e retorna um 404.

Exemplo: Acessar /123/js/jquery.js no navegador retorna um erro 404: The requested URL /js/jquery.js was not found on this server. Observe como a mensagem de erro se refere ao nome do arquivo que foi reconfigurado para o nome do arquivo correto. Se eu copiar e colar o URL da mensagem de erro no campo de URL do meu navegador (omitir a regra de reconfiguração), ele retornará o arquivo!

A única diferença entre o arquivo php (que funciona) e minhas imagens / arquivos javascript é que o último reside em sub-diretórios em vez de no nível da raiz.

Colocar meu arquivo php na pasta /test sub produz o mesmo problema, por exemplo:

/35/test/invoices.php = > The requested URL /test/invoices.php was not found on this server.

Novamente, mod_rewrite alterou o caminho como esperado, mas o apache não consegue localizar o arquivo. Acessá-lo diretamente funciona bem.

O problema com javascripts e imagens pode ser facilmente resolvido usando caminhos absolutos, já que eles não precisam do parâmetro companyId. No entanto, abaixo da estrada, eu posso querer estruturar meus arquivos php em sub-diretórios, então eu preciso de uma correção para isso agora.

Alguém sabe por que o apache não pode encontrar arquivos em subdiretórios quando o caminho passou pelo módulo de reescrita?

Obrigado!

Geir

    
por Geir 30.04.2013 / 14:11

0 respostas