Version complète: sur le forum Webmaster Hub : Problème d'url rewriting
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
Surfoo
Bonjour à tous,

Je sous Ubuntu avec Apache 2.0.54 et PHP 5.0.5, c'est donc mon propre serveur en local. Le mod_rewrite est activé (je le vois dans phpinfo).

J'ai testé l'exemple disponible sur cette page : http://www.webmaster-hub.com/publication/article5.html
J'ai donc mis le texte suivant dans le .htaccess :
CODE
Options +FollowSymlinks
RewriteEngine on
RewriteRule   ^nexistepas.html$   trouve.html  [L]


Premier test : Erreur 500. Je commente la ligne Options +FollowSymlinks et je recommence.
J'obtiens une erreur 404. Je ne sais pas vraiment quoi faire là.

Il faurt que je modifie quelquechose dans la configuration d'Apache ?

Merci.
e.MiLoU
Si il fait une erreur 404, c'est que le fichier n'existe pas... As-tu bien une page qui s'appele nexistepas.html??
oxyd-x
Salut Surfoo et bienvenue sur le hub ;-)

essaye de remplacer le contenu de ton htaccess par celui-ci :
CODE
Options +FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.htm(l)?$ /index.php


créer un fichier "index.php" que tu placera à la racine de ton site, et ensuite, à partir de ton navigateur, tente d'appeler une page html inéxistante :
CODE
http://localhost/trucbidon.html



Si tu obtient toujours des erreurs, vérifie ta configuration apache, notamenent le fait que tu autorise l'utilisation de commandes dans un fichier htaccess.

Voila, tiens-moi au courant wink.gif

oxyd.
Surfoo
Euh non ma page s'appelle trouve.html et j'appelle la page nexistepas.html dans la barre d'URL.


Edit : Bon je viens de tester ce que tu me dit oxyd-x.

Options +FollowSymLinks me donne toujours une erreur 500 :/ je l'ai commenté pour le moment mais je sais pas comment faire pour que ça le fasse plus dans la config d'Apache.

Sinon j'ai un fichier index.php, mais quand j'écris le nom d'une page bidon dans l'URL => Erreur 404


Il faut vérifier quoi dans la config d'Apache pour que ça fonctionne ?


Merci de votre aide :)
oxyd-x
Re wink.gif

dans ton fichier de configuration, plus précisement dans la section "répertoire" principal; vérifie que tu dipose d'une configuration de type :

CODE
<Directory "/home/www">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride all
   Order allow,deny
   Allow from all
</Directory>


vérifie aussi (phpinfo()wink.gif que ton serveur accepte le rewriting, en base.
Surfoo
bon ça change rien, j'ai mis ça dans pour le répertoire mais j'ai toujours l'erreur 404.


Et euh en fait j'ai oublié de parler d'un truc :
J'ai une url qui se nomme contact, qui renvoie vers contact.php et ça fonctionne mais j'ai une autre url de la forme liste,1,1 (pour liste.php?a=1&t=1) qui me fait erreur 404.

Désolé pour l'oubli.
oxyd-x
Afin de pouvoir t'aider correctement, il me faudrait un peu plus d'informations;

- le contenu de ton fichier .htaccess
- l'url virtuelle (complete) que tu aimerais pouvoir utilisée
- l'adresse réelle (complete) du document sur ton serveur
Surfoo
Bon, j'ai l'impression qu'il y a un problème : Quand je renomme .htaccess en .htaccess_, le serveur fait quand même fonctionner l'url rewriting. Mon fichier de base c'est :
http://127.0.0.1/IMManager/contact.php et dans la barre d'adresse c'est :
http://127.0.0.1/IMManager/contact (sans le .php donc)

et donc quand je renomme le fichier ça marche quand même ! -_-

Mon fichier .htaccess :

CODE
Options +FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.htm(l)?$ /index.php


Quand je tape :
http://127.0.0.1/IMManager/ffgfg.htm
Ça me fait :
CODE
Not Found

The requested URL /index.php was not found on this server.

mais si je tape :
http://127.0.0.1/IMManager/contact
Ça m'affiche bien la page contact.php, alors que rien n'est indiqué dans le fichier .htaccess -_-

Et si je tape :
http://127.0.0.1/IMManager/liste,1,1
Ça me renvoie une erreur 404 :/
Compte supprimé
Si ça peut t'aider, en local chez moi je fais :
CODE
RewriteRule (.*)\.htm(l)?$ /chemin_depuis_le_127.0.0.1/index.php

Ca marche comme ça je n'ao pas plus creusé.
Surfoo
Bon, tout fonctionne.

En fait ça viens de configuration d'Apache et du AllowOverride qui était à None avant et qui est maintenant à All.

Ça sert à quoi le AllowOverride ?

En tout cas, merci pour votre aide :)


Edit : j'ai trouve :p

AllowOverride = All pour donner la priorité aux fichiers .htaccess
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.