Estou tentando configurar o Apache e o Passenger para servir um aplicativo Rails. No entanto, também preciso que ele forneça arquivos estáticos de um diretório diferente de / public e dê prioridade a esses arquivos estáticos sobre qualquer coisa no aplicativo Rails.
O aplicativo Rails está em /home/user/apps/testapp
e os arquivos estáticos em /home/user/public_html
. Por vários motivos, os arquivos estáticos não podem simplesmente ser movidos para a pasta pública Rails. Observe também que o link deve ser veiculado pelo arquivo index.html na pasta public_html.
Aqui está a configuração que estou usando:
<VirtualHost *:80>
ServerName domain.com
DocumentRoot /home/user/apps/testapp/public
RewriteEngine On
RewriteCond /home/user/public_html/%{REQUEST_FILENAME} -f
RewriteCond /home/user/public_html/%{REQUEST_FILENAME} -d
RewriteRule ^/(.*)$ /home/user/public_html/$1 [L]
</VirtualHost>
Isso serve ao aplicativo Rails, mas oferece 404 para qualquer conteúdo estático de public_html. Eu também tentei uma configuração que usa DocumentRoot /home/user/public_html
, mas isso não serve ao aplicativo Rails, presumivelmente porque o Passenger não sabe processar o pedido.
Curiosamente, se eu alterar as condições para! -f e! -d e a regra de reconfiguração para redirecionar para outro domínio, ele funcionará como esperado (por exemplo, http://domain.com/doesnt_exist
é redirecionado para http://otherdomain.com/doesnt_exist
)
Como posso configurar o Apache para servir arquivos estáticos como este, mas permitir que todos os outros pedidos continuem no Passenger?