2010-02-03 9 views
4

Je suis actuellement en train d'exécuter Apache2 sur ma machine locale, installée avec la dernière version d'Ubuntu. J'essaie d'obtenir la réécriture d'URL de base en utilisant le fichier .htaccess.RewriteRule dans .htaccess ne fonctionne pas

Le fichier "http://localhost/page.php?=home" existe et l'emplacement "/ doesnotexist/home" ne l'est pas.

Je voudrais que la première page soit chargée lorsque la seconde est demandée.

Mon fichier .htaccess ressemble à ceci:

RewriteEngine On 
RewriteRule ^/doesnotexist/(.*)$ /page.php?p=$1 

Mon fichier httpd.conf ressemble à ceci:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so 

<Directory /var/www> 
    AllowOverride All 
</Directory> 

Notez que mon fichier httpd.conf ressemble exactement comme ça, comme c'était vide avant de l'éditer.

Le résultat que je reçois est la suivante:

Not Found 

The requested URL /doesnotexist/home was not found on this server. 

J'ai googlé le toujours vivant **** sur ce problème, et je ne l'ai jamais eu autre chose que l'erreur ci-dessus.

Si quelqu'un a des idées, je serais très reconnaissant.

Répondre

19

Pour le bénéfice des autres, je me suis dit la réponse:

Dans le fichier "/ etc/apache2/sites-enabled/000 par défaut" il y avait la ligne:

AllowOverride None 

Modifier ceci:

AllowOverride All 
2

Vous devez supprimer le préfixe de chemin contextuel de votre modèle lorsque vous utilisez mod_rewrite dans un fichier .htaccess. Dans le cas du répertoire racine, le préfixe du chemin est simplement /. Donc, essayez ceci:

RewriteRule ^doesnotexist/(.*)$ /page.php?p=$1 
+0

Merci pour la réponse rapide, mais désolé, le comportement est inchangé. – riwalk

0

Si je place un .htaccess dans/Bibliothèque/WebServer/Documents et ouvrir "localhost /"; pour le tester, cela fonctionne comme prévu. Cela ne fonctionne pas dans "~/Sites". J'ai essayé ceci sur Mac OS X Mavericks.