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
aAll
ma questo provoca unHTTP 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
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! –
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. –
'' httpd.conf'' ha lo scopo di aggiungere la configurazione dell'utente ed è incluso nel file '' apache2.conf''. È vuoto per impostazione predefinita. – cyberhicham