regra de reescrita alterou o caminho base do aplicativo da web

1

Eu tenho um aplicativo da web simples e configuro-o para usar o .htaccess para regras de regravação.

Options +followSymlinks
RewriteEngine on
Rewriterule ^records/view/([0-9]+)$ ./record_view.php?id=$1 [NC]

Funciona, mas a página não vê o arquivo CSS externo. Em vez de procurar por ./style.css, ele está procurando registros / view / style.css.

<link rel="StyleSheet" href="style.css" type="text/css" />

Funciona se eu usar o caminho completo: href="/myapp/style.css" .

O aplicativo foi escrito antes das regras de reescrita serem adicionadas, então isso também quebra todos os links do aplicativo. href="index.php" tem que se tornar href="/myapp/index.php" .

Eu tenho que voltar e consertar todos os links apenas para usar regras de reescrita ou há uma configuração que eu possa mudar? (Ubuntu Server 11, Apache2, PHP5)

Obrigado.

    
por Ed Manet 09.04.2012 / 15:16

1 resposta

1

Que tal pegar todos os pedidos de recursos e reescrevê-los de volta para como eles precisam ser?

# Existing config:
RewriteEngine on
RewriteRule ^records/view/([0-9]+)$ ./record_view.php?id=$1 [NC]
# Add:
RewriteRule ^records/view/(.*)$ ./$1 [NC]

Isso conserta recursos, mas não ajuda com links - eles precisariam ser redirecionados.

Você poderia, claro, trabalhar com mais regras, mas eu recomendaria corrigir os links. Limpar o seu HTML para trabalhar com a estrutura do seu aplicativo faz mais sentido do que hacking ao redor dele na configuração do Apache.

    
por 09.04.2012 / 20:42