2013-01-19 14 views
10

Il mio problema è che il mio file .htaccess sul mio server locale non viene letto. Le impostazioni nel file VirtualHost sembrano avere sempre la precedenza.Come ottenere file .htaccess che funzionano con Apache VirtualHost

Ho provato quanto segue:

  • Abilitato mod_rewrite
  • Modificato il AllowOverride a All ma questo provoca un HTTP Error 500 Internal server error. L'ho provato con varie opzioni ma causa sempre un errore 500.

Sto usando un file VirtualHost su Ubuntu, che è simile alla seguente:

<VirtualHost *:80> 
ServerAdmin [email protected] 

DocumentRoot /web/website 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
</Directory> 
<Directory /web/website> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride None 
    Order allow,deny 
    allow from all 
</Directory> 
</VirtualHost> 

Nel mio file .htaccess sotto /web/website ho le seguenti regole (che non vengono letti):

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?/$1 [L] 
RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit 
RewriteRule ^(.*)$ ogtags.php?$1 [L,QSA] 
ErrorDocument 404 /404 
ErrorDocument 401 /401 

Una cosa che ho provato e che ha funzionato è stata l'aggiunta di queste regole direttamente nel file VirtualHost, ma vorrei che il mio file .htaccess funzionasse! È una domanda così grande? :(

Edit:..? Così ho guardato nel mio apache error.log e dice Invalid command 'Action', perhaps misspelled or defined by a module not included in the server configuration riferendosi al mio file .htaccess Non sembra essere un modulo chiamato Azione che posso abilitare Tutte le idee

Edit 2: ho notato che il mio file httpd.conf è in bianco deve questa materia dal momento che sto usando VirtualHost file

+0

ho cercato commentando tali norme, ma non sembrano essere state la causa del problema. Qualche altro suggerimento? Penso che tu abbia ragione, deve essere una di queste regole che sono sbagliate. Ho anche provato a commentare tutte le regole e ancora non ha avuto alcun effetto! Quindi non so cos'altro da provare! –

+0

Hmm ma queste regole funzionano bene sul server live, inclusi gli 404. Quindi ci deve essere qualcos'altro nella mia configurazione di apache locale che è sbagliato. –

+0

'' httpd.conf'' ha lo scopo di aggiungere la configurazione dell'utente ed è incluso nel file '' apache2.conf''. È vuoto per impostazione predefinita. – cyberhicham

risposta

6

Dopo aver guardato il mio apache error.log mi sono reso conto ho dovuto abilitare il modulo di Apache actions: azioni a2enmod

sudo

E non più 500 errori interni del server!

Spero che questo aiuti qualcuno lungo la linea :)

1

si perde l'direttiva RewriteBase /

.?

aggiungere un commento dopo la direttiva RewriteEngine:

RewriteEngine On 
RewriteBase/
+0

Questo non ha modificato nulla, ottenendo ancora 'Errore HTTP 500 server interno' :( –

+2

controlla i log che sono in genere in' '/ var/log/apache2/error.log'' – cyberhicham

+0

Grazie! Aggiornato il mio problema –

Problemi correlati