Localhost .htaccess não funciona no Ubuntu

5

Eu tenho tentado fazer com que meu arquivo .htaccess funcione no meu host local. Eu sei que o arquivo funciona porque está no meu servidor e funciona. No entanto, não parece estar funcionando localmente.

Eu segui os tutoriais que pude encontrar para definir substituições para todos, abaixo está o meu /etc/apache2/sites-available/default file start:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

Este é o código no mesmo diretório do meu site de nibble:

<VirtualHost *:80>
    ServerName nibble.local
    DocumentRoot /var/www/nibble_framework/web/
    <Directory /var/www/nibble_framework/web/>
        AllowOverride All
        Options Indexes FollowSymLinks MultiViews
        Allow from All
    </Directory>
    RewriteLog /var/www/rewrite.log
    ErrorLog /var/log/apache2/error.log
</VirtualHost>

Eu habilitei este site usando o a2ensite e reiniciei o apache. Eu também adicionei o site ao meu arquivo hosts:

  127.0.0.1  nibble.local

Eu habilitei a reescrita de mod usando a2enmod e reiniciei / recarreguei o apache várias vezes.

  $ a2enmod rewrite 
  Module rewrite already enabled

Meu arquivo .htaccess está em /var/www/nibble_framework/web/.htaccess e tem o seguinte código:

  Options +FollowSymLinks +ExecCGI

  <IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^([^/]*)/?.*$ - [E=FILE:%{DOCUMENT_ROOT}/$1.php]

  RewriteCond %{ENV:FILE} !^$
  RewriteCond %{ENV:FILE} -f
  RewriteRule ^([^/]*)/?(.*)$ $1.php?url=$2 [QSA,L]

  RewriteCond %{ENV:FILE} !^$
  RewriteCond %{ENV:FILE} !-f
  RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
  </IfModule>

Quando eu faço um print_r($_REQUEST) , é sempre um array vazio mesmo quando o URL é preenchido por uma longa string.

Alguém tem alguma ideia de por que isso pode estar falhando?

Editar:

log de acesso do apache2:

~$ tail -f /var/log/apache2/access.log
::1 - - [16/Aug/2011:07:32:39 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:39 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:39 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
::1 - - [16/Aug/2011:07:32:40 +0100] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.2.16 (Ubuntu) (internal dummy connection)"
    
por Luke 16.08.2011 / 10:12

2 respostas

3

Eu suspeito que seu VirtualHost não está sendo processado corretamente, o que não configuraria AllowOverride para as solicitações get. Primeiro o seu arquivo /etc/hosts deve ficar assim ...

127.0.0.1   localhost   localhost.localdomain
127.0.1.1   nibble.local
Em segundo lugar, você deve ter essa interface definida para vhosts namebased. Você não especificou se você tem atualmente definido. Geralmente é definido na configuração principal do apache, eu acho que o ubuntu / debian tem esse arquivo localizado /etc/apache2/apache2.conf . Certifique-se de que esta linha esteja definida algures nesse arquivo,

NameVirtualHost *:80

Depois de fazer essas alterações, reinicie o apache

sudo /etc/init.d/apache2 restart

Noe, teste, lembre-se de configurar apenas a entrada de hosts localmente. Então, como isso só funcionará corretamente quando solicitado pelo host local. Se você ficar preso ou não funcionar, poste as linhas relevantes em /var/log/apache2/error.log

    
por 18.01.2012 / 21:43
1

Especifique a diretiva AccessFileName para usar o arquivo .htaccess .

AccessFileName .htaccess

Ative o mecanismo de reescrita e reinicie o serviço.

sudo a2enmod rewrite 
    
por 18.01.2012 / 07:27