2011-03-06 36 views
30

Estoy intentando que un sitio web funcione en mi entorno de prueba, pero de alguna manera no funciona. Puedo cargar la página de índice normal, pero cuando quiero acceder/página/probar arroja un error que dice que la página no existe. Mi registro dice:El servidor Apache ignora .htaccess

File does not exist: /home/page_url/www/page

que de hecho es cierto, pero debe llegar a mi página en lugar del controlador y cargar el método de ensayo.

Mi .htaccess se parece a:

# Turn on URL rewriting 
RewriteEngine On 

# Installation directory 
RewriteBase/

# Protect hidden files from being viewed 
<Files .*> 
    Order Deny,Allow 
    Deny From All 
</Files> 

# Protect application and system files from being viewed 
RewriteRule ^(?:application|modules|system)\b.* /$0 [L] 

# Allow any files or directories that exist to be displayed directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# Rewrite all other URLs to index.php/URL 
RewriteRule .* index.php/$0 [PT] 

Mi configuración de host virtual se parece a:

<VirtualHost *:80> 
    ServerName page_url 
    Include /etc/apache2/vhosts.d/vhco.include 
    DocumentRoot "/home/page_url/www/" 

    # Logging 
    CustomLog /var/log/apache2/access_log common 
    ErrorLog /var/log/apache2/error_log 

    # This should be changed to whatever you set DocumentRoot to. 
    <Directory "/home/page_url/www/"> 
     # Possible values for the Options directive are "None", "All", 
     # or any combination of: 
     # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews 
     # 
     # Note that "MultiViews" must be named *explicitly* --- "Options All" 
     # doesn't give it to you. 
     # 
     # The Options directive is both complicated and important. Please see 
     # http://httpd.apache.org/docs/2.2/mod/core.html#options 
     # for more information. 
     Options Indexes FollowSymLinks 

     # AllowOverride controls what directives may be placed in .htaccess files. 
     # It can be "All", "None", or any combination of the keywords: 
     # Options FileInfo AuthConfig Limit 
     AllowOverride All 

     # Controls who can get stuff from this server. 
     Order allow,deny 
     Allow from All 
    </Directory> 

    <IfModule alias_module> 
     # Redirect: Allows you to tell clients about documents that used to 
     # exist in your server's namespace, but do not anymore. The client 
     # will make a new request for the document at its new location. 
     # Example: 
     # Redirect permanent /foo http://www.example.com/bar 

     # Alias: Maps web paths into filesystem paths and is used to 
     # access content that does not live under the DocumentRoot. 
     # Example: 
     # Alias /webpath /full/filesystem/path 
     # 
     # If you include a trailing/on /webpath then the server will 
     # require it to be present in the URL. You will also likely 
     # need to provide a <Directory> section to allow access to 
     # the filesystem path. 

     # ScriptAlias: This controls which directories contain server scripts. 
     # ScriptAliases are essentially the same as Aliases, except that 
     # documents in the target directory are treated as applications and 
     # run by the server when requested rather than as documents sent to the 
     # client. The same rules about trailing "/" apply to ScriptAlias 
     # directives as to Alias. 
     ScriptAlias /cgi-bin/ "/var/www/localhost/cgi-bin/" 
    </IfModule> 

    # "/var/www/localhost/cgi-bin" should be changed to whatever your ScriptAliased 
    # CGI directory exists, if you have that configured. 
    <Directory "/home/page_url/www/"> 
     AllowOverride None 
     Options None 
     Order allow,deny 
     Allow from All 
    </Directory> 
</VirtualHost> 

estoy usando Gentoo.

Cualquier ayuda sería apreciada.

Respuesta

61
<Directory "/home/page_url/www/"> 
    AllowOverride None 

Este AllowOverride None desactiva .htaccess archivos puedan ser leídos. Ver the manual.

Además, tenga en cuenta que no hay nada mágico sobre los archivos .htaccess. Son una tosca solución para no tener acceso completo a la configuración del servidor. Todo lo que son es una pieza de configuración de Apache. Si tiene acceso completo a la configuración del servidor, debe poner cosas como esta en la configuración de vhost, no en los archivos .htaccess.

+1

Asegúrese de marcar '/ etc/apache2/sites-available' y en'/etc/apache2/apache2.conf' para las configuraciones con 'AllowOverride None'. ¡No hacer esto me impidió mostrar una versión funcional de mi página web para una reunión completa! –

+6

'AllowOverride All' soluciona el problema –

4

Una cosa para recordar si sus reglas de reescritura todavía no funcionan:

activar también el módulo modrewrite! No es por defecto en Ubuntu.

+0

Este era mi problema. Tenía el módulo habilitado pero a mi archivo .htaccess le faltaba 'RewriteEngine on'. ¡Eso es lo que obtengo por estropear un copy/paste de otra configuración! – vaindil

10

Como dijo Jim, si tiene acceso completo a su servidor, debería simplemente poner todo en los archivos de configuración del servidor.

Llegué aquí porque pensé que mi servidor estaba ignorando mis propios archivos de configuración de htaccess/servidor. Sin embargo, resultó que tenía mod_expires y mod_rewrite deshabilitados. Después de haber investigado a los dos, todo estaba funcionando de nuevo como debería.

Puede permitirles mediante la ejecución de estos comandos:

sudo a2enmod expires 
sudo a2enmod rewrite 

continuación, reinicie Apache

service apache2 restart 

Espero que esto ayude a alguien por ahí!

+0

Gracias. reescribir mod no es suficiente, tuve que agregar expira. –

+0

eres bienvenido! –

+1

Ojalá pudiera +1000 esto. ¡¡¡¡gracias!!!! – ingernet

Cuestiones relacionadas