2010-09-24 11 views
10

Voglio configurare una regola mod_rewrite senza utilizzare i file .htaccess. Quando inserisco le regole nei file .htaccess, funzionano bene, ma preferirei lasciare tutta la configurazione nel mio file di configurazione/etc/apache2/sites-available/[nome sito].Dove posso inserire RewriteRules in Apache2 senza utilizzare i file .htaccess?

Quando inserisco le stesse RewriteRules all'interno delle direttive VirtualHost o Directory, non funziona nulla. Che cosa sto facendo di sbagliato? Ecco un esempio dal mio file di configurazione VirtualHost:

<Directory /> 
Options FollowSymLinks 
# AllowOverride is on for the .htaccess files to work 
AllowOverride All 
RewriteEngine On 
RewriteRule ^oldsite\.php$ newsite.php 
</Directory> 

sto pensando che potrei essere un po 'trascurando direttiva all'interno del file apache2.conf, ma non sono sicuro. Aiuto. :)

risposta

5

Si sta utilizzando un RewriteRule pattern that is meant for an .htaccess file. Il motivo:

Quando si utilizza il motore di riscrittura nel file .htaccess il prefisso per directory (che è sempre lo stesso per una directory specifica) viene automaticamente rimosso per il pattern matching e automaticamente aggiunto dopo la la sostituzione è stata fatta.

in modo da provare questa regola con il percorso completo URL:

RewriteRule ^/oldsite\.php$ /newsite.php 
+0

La ringrazio molto per la risposta rapida. Non funzionerebbe quando l'ho inserito nella direttiva Directory, ma l'ho spostato su VirtualHost e ora funziona correttamente. Qualche idea del perché? – wittmaniac

+0

@ user358036: Credo che sia necessario inserirlo nella sezione '' che descrive la root del documento. – Gumbo

Problemi correlati