2012-07-18 22 views
7

Sto cercando di ripulire i miei void di Apache, dal momento che ho un numero di 'Alias' in atto, e metterli tutti in un mod_rewrite può essere fastidioso. Tuttavia, mentre posso arrivare a URL specifici (come ad esempio http://example.dev/robots.txt, http://example.dev/ da sola, il vhost non cadrà di nuovo alla URL (FallbackResource /index.php).FallbackResource su Apache2 (2.2.22 (Ubuntu))

Il vhost è un contenitore per un progetto Zend Framework, e non file .htaccess sono impostati

il log di accesso mostra .... "GET/HTTP/1.1" 302 0, ma Google Chrome sta mostrando 'Non ci sono dati ricevuti' e. 'Errore 324 (net :: ERR_EMPTY_RESPONSE): il server ha chiuso la connessione senza inviare alcun dato.'

Commentando la riga FallbackResource e riabilitando la mod_rewrite basata su <Location /> funziona come comunque

MODIFICA: Non c'è niente nel vhost che possa vedere per impedirne il funzionamento. Alcune linee Alias (con cui FallbackResource dovrebbe funzionare) e alcune FilesMatch per interrompere l'accesso al file con estensioni particolari. L'unica cosa che appare nei log è il 404 quando sta provando ad andare all'URL e non a index.php (la risorsa elencata).

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName example.com 
    ServerAlias www.example.com 

    DocumentRoot /var/website/current/html/ 

    SetEnv APPLICATION_ENV productionbackend 

    # must be most specific first 
    Alias /i/static /var/website/static/i 
    # more /i/* Alias 
    Alias /i  /var/website/current/resources/common-furniture/ 

    # protecting files in the directory. 
    <FilesMatch ".*\.xml"> 
     Order allow,deny 
     Deny from all 
    </FilesMatch> 

    <Directory "/var/website/current/html/"> 
     Options FollowSymLinks All 
     AllowOverride All 
    </Directory> 

    ErrorLog logs/error.log 
    CustomLog logs/access.log common 
</VirtualHost> 
+0

Qualcosa nei registri degli errori di Apache? – nneonneo

+0

C'è qualche direttiva nel tuo vhost che potrebbe impedire il funzionamento di FallbackResource? Si prega di inviare una sezione più ampia della configurazione di vhost. –

+0

Hai mai risolto questo? Sto avendo lo stesso problema. – Marlun

risposta

3

Ho una soluzione. Come ho detto nel mio commento sulla domanda originale, sto anche avendo lo stesso problema. Il mio vhost è semplice ultra:

<VirtualHost *:8029> 
    DocumentRoot "C:\path\to\wwwroot" 
    ServerName localhost 
     <Directory /> 
       AllowOverride All 
     </Directory> 
</VirtualHost> 

e il mio .htaccess contiene solo:

FallbackResource index.html 

ho aggiunto DirectoryIndex al mio file .htaccess. Ora si legge:

FallbackResource /index.html 
DirectoryIndex index.html 

Questo ha risolto il problema.

Perché funziona?

La risposta vuota si è verificata solo quando l'URL / è stato chiamato la seconda volta ed è stato memorizzato nella cache dal browser. Per qualche ragione, sembra che FallbackResource non riesca in questa istanza, quindi ho pensato che assicurando che l'index.html sia servito specificando DirectoryIndex, non ci sarebbe bisogno di un fallback. Si potrebbe chiamare una soluzione alternativa.

+2

Questa risposta è sbagliata su un numero di fronti: per prima cosa stai impostando 'AllowOverride All' in' '- questo significa che non solo stai consentendo configurazioni definite dall'utente OVUNQUE, ma stai anche istruendo httpd a controllarlo OVUNQUE . Questo ha ENORME prestazioni e implicazioni sulla sicurezza. Quindi, pur avendo accesso completo alla configurazione, stai utilizzando una parte della tua configurazione in un file '.htaccess': vorrei ribadire che questo è utile solo per * utenti * che non * * * e * dovrebbero * non avere) accesso al server o alla sua configurazione. –

+1

Proprio tu sei @ IgorGalić :) Avrei dovuto notare che questa è una soluzione di sviluppo solo come mia '.htaccess' è convenientemente sotto VCS e il mio sistema 'httpd-vhosts.conf' non lo è. Metterò la mia configurazione nel 'httpd-vhosts.conf' sulla distribuzione effettiva. Grazie per il commento. –