2012-07-18 14 views
7

Estoy tratando de limpiar mis fantasmas de apache, ya que tengo un número de 'Alias ​​en su lugar, y ponerlos todos en una mod_rewrite puede ser molesto. Sin embargo, cuando me proveen a URL específicas (como http://example.dev/robots.txt, http://example.dev/ por sí solo, el host virtual no caer de nuevo a la URL que aparece (FallbackResource /index.php).FallbackResource en Apache2 (2.2.22 (Ubuntu))

El host virtual es un contenedor para un proyecto Zend Framework, y sin archivos .htaccess se establecen

el registro de acceso muestra .... "GET/HTTP/1.1" 302 0, pero Google Chrome está mostrando 'reciben datos' y. 'Error 324 (net :: ERR_EMPTY_RESPONSE): el servidor ha cerrado la conexión sin enviar ningún dato.'

Comentando la línea FallbackResource, y volviendo a habilitar el mod_rewrite basado en <Location /> funciona como ex pected sin embargo.

EDIT: No hay nada en el vhost que pueda ver para evitar que funcione. Algunas líneas Alias (que se supone que funciona con FallbackResource) y algunas FilesMatch para detener el acceso al archivo con extensiones particulares. Lo único que aparece en los registros es 404 cuando intenta ir a la URL y no a index.php (el recurso listado).

<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

¿Hay algo en los registros de errores de Apache? – nneonneo

+0

¿Hay alguna directiva en su vhost que pueda evitar que FallbackResource funcione? Por favor, publique una sección más grande de su configuración de vhost. –

+0

¿Alguna vez resolvió esto? Estoy teniendo el mismo problema. – Marlun

Respuesta

3

Tengo una solución. Como dije en mi comentario sobre la pregunta original, también estoy teniendo el mismo problema. Mi host virtual es ultra sencilla:

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

y mi .htaccess sólo contiene:

FallbackResource index.html 

He añadido DirectoryIndex a mi archivo .htaccess. Ahora se lee:

FallbackResource /index.html 
DirectoryIndex index.html 

Esto ha resuelto el problema.

¿Por qué funciona esto?

La respuesta vacía solo se produjo cuando se invocó la url / por segunda vez y el navegador la almacenó en caché. Por alguna razón, parece que FallbackResource falla en este caso, así que pensé que al asegurar que index.html se sirve especificando DirectoryIndex, no habría necesidad de un respaldo. Usted podría llamar esto una solución.

+2

Esta respuesta es mala en varios frentes: en primer lugar configura 'AllowOverride All' en' '- eso significa que no solo está permitiendo las configuraciones definidas por el usuario EN TODAS PARTES, también le está pidiendo a httpd que las verifique EN TODAS PARTES . Esto tiene GRANDES implicaciones de rendimiento y seguridad. Entonces, a pesar de tener acceso completo a la configuración, está usando poner parte de su configuración en '.htaccess': me gustaría reiterar que esto solo es útil para * usuarios * que * no * (y * deberían * no tener) acceso al servidor o su configuración. –

+1

Bien, tú eres @ IgorGalić :) Debería haber notado que esta es una solución de desarrollo solo como mi '.htaccess' está convenientemente bajo VCS y mi sistema de ancho 'httpd-vhosts.conf' no lo es. Voy a poner mi configuración en el 'httpd-vhosts.conf' en la implementación real. Gracias por comentar –

Cuestiones relacionadas