Idem para o OP.
- Também não consegui descobrir como obter a configuração do Apache VHOST para rotear solicitações não localizáveis para um 404.
- Da mesma forma, eu também fui bloqueado ao tentar descobrir como obter URLs sem extensão para mapear
ProxyPassMatch
.
- Claro ... eu poderia rotear tudo através do
php-fpm
proxy, mas isso matou arquivos javascript e css.
Solução Teórica
Meu palpite é que eu teria que escrever um processador 404.php
personalizado - e então rotear todos os pedidos através da anexação do (s) arquivo (s) solicitado (s) como uma string de consulta.
Por exemplo:
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-s
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-l
RewriteRule ^.*$ fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/404.php?no_comprende=%{REQUEST_URI} [P]
...
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1
...
em teoria - e assumindo que a ordem em que eles estão listados ainda se aplica como normal:
Any 404'd file would be caught before the ProxyPassMatch
directive was reached
MINHA SOLUÇÃO
- php5-fpm (5.4.23)
- Apache 2.4.2
- Ubuntu 12.04 / 3.8.0-34 x86_64
Para lidar com URLs sem extensão com php-fpm
, adaptei o acima para procurar URLs sem extensão na configuração do meu VHOST:
...
# Extensionless URL's
RewriteCond %{REQUEST_FILENAME} ^/((.*)(/.*)?)$
RewriteCond %{DOCUMENT_ROOT}/%2.php -f
RewriteRule !.*\.php$ fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/%1.php [P]
# files w/ .php extensions
RewriteCond %{REQUEST_FILENAME} ^/((.*\.php)(/.*)?)$
RewriteCond %{DOCUMENT_ROOT}/%2 -f
RewriteRule . fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/%1 [P]
...
Não é bonito, mas faz o trabalho: - (