Bonjour à tous, Je débute en réécriture d'url et j'avoue que malgré toutes mes recherches depuis plusieurs semaines, je bloque. Voilà mon code dans le .htaccess qui est au même niveau que mes pages web : Code: Options +FollowSymlinks RewriteEngine On RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ article.php?var1=$1&var2=$2 [L] C'est juste un test, pour réellement comprendre comment ça marche. J'ai donc créé une page article.php ou j'affiche les variables comme ceci : Code: <?PHP echo $_GET['var1'].' - '.$_GET['var2']; ?> Mes liens sont sous cette forme : Code: - <a href="article-1-1.html">Article 1.1</a><br> - <a href="article-1-2.html">Article 1.2</a><br> - <a href="article-1-3.html">Article 1.3</a><br> Je souhaiterais savoir ce qui ne va pas dans ma logique s'il vous plait. Le serveur me retourne une erreur comme quoi la page demandée (en l'occurrence article-1-2.html) n'existe pas. J'attends vos conseils. Merci uado
Fait un test simple: Code: Options +FollowSymlinks RewriteEngine On RewriteRule ^article.html$ article.php [L] Appelle la page article.html
Salut, Merci pour cette réponse rapide. J'ai essayé de faire ce que tu m'as dit, ça ne marche toujours pas. La page n'est toujours pas trouvée par le serveur. Je suis sur que ça marche sur ce serveur (serveur de la fac, et un prof m'a dit que c'était ok). Donc, ça ne marche même pas pour la réécriture de article.php De plus, ça ne marche pas en local, il doit falloir activer quelque chose de supplémentaire. PS : c'est normal que le fichier .htaccess ne soit pas visible avec un client ftp, ou directement en listant le dossier ?
Quel est ton hégergeur et le type de serveur? mod_rewrite est-il chargé? essaye avec un / devant l´url réécrite: RewriteEngine on RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ /article.php?var1=$1&var2=$2 [L] Oui et le on de RewriteEngine est en minuscule...
Bonsoir, J'ai fait les deux modifications (le 'on' en minuscules et le '/') mais ça ne marche toujours pas. Le serveur est un serveur MAC OS X, il est utilisé en majeure partie pour de l'hébergement web. Normalement, ça marche sur ce serveur, un prof me l'a certifié.
Dans le phpinfo() du serveur, le mod_rewrite est dans les 'Loaded Modules' de Apache, donc, c'est bien chargé. Que ce soit en local ou sur le serveur, on me retourne une erreur 404. Quelqu'un a une idée ? Je récapitule donc : j'ai un fchier .htaccess qui contient ce code pour l'instant : Code: Options +FollowSymlinks RewriteEngine on RewriteRule ^article.html$ /article.php [QSA,L] RewriteRule ^article-([0-9]+)-([0-9]+)\.html$ /article.php?var1=$1&var2=$2 [QSA,L] Une page menu.php contient ces liens : Code: - <a href="article.html">Accueil des articles</a><br> - <a href="article-1-1.html">Article 1.1</a><br> - <a href="article-1-2.html">Article 1.2</a><br> - <a href="article-1-3.html">Article 1.3</a><br> Ma page article.php récupère les variables comme ceci : Code: <?PHP echo $_GET['var1'].' - '.$_GET['var2']; ?> Le module mod_rewrite est chargé correctement sur le serveur ainsi qu'en local. Cependant, erreur 404 :s Je ne comprends pas d'où ça vient.
Et la config de ton serveur est elle correcte? va-t´il chercher le .htaccess? Il te faut, dans le httpd.conf: AccessFileName .htaccess DocumentRoot "le rep root\www" <Directory /> Options FollowSymLinks AllowOverride All </Directory> Est-ce que c´est bon? A oui, pour vérifier si le .htaccess est bien utilisé par apache, il suffit de mettre une règle fausse, ce qui provoquera une erreur 500.
Not Found The requested URL /visionair/article-1-2.html was not found on this server. Apache/1.3.33 Server at 127.0.0.1 Port 80 Voilà ce que ça me retourne en local. Je viens de changer le document root dans le httpd.conf et ça ne marche toujours pas. Je ne sais pas pourquoi j'ai une erreur 404 au lieu d'une erreur 500.
En fait, en local, c'est http://127.0.0.1/visionair (visionair étant l'alias dans EasyPHP). J'ai mis tous mes fichiers dans C:\Program Files\EasyPHP1-8\www\visionair le fichier .htaccess est au même niveau que mes pages, c'est à dire : http://127.0.0.1/visionair Sur le serveur, je suis effectivement dans un dossier : http://www.adresse-serveur.com/visionair et je n'ai la main que sur ce dossier visionair, donc, le .htaccess sera également à cette adresse : http://www.adresse-serveur.com/visionair
En ajoutant : Redirect -123265 *1236 à mon .htaccess j'ai cette erreur (en local) : Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Et c'est bien une erreur 500 pourtant.
Donc ton .htaccess fonctionne bien. Peux-tu mettre la partie de ton .htaccess + l´url réelle de la page et son URL par laquelle tu veux y accéder... Merci
Bonsoir Ca marche, sans les ancrages. Est ce que c'est grave de ne pas les mettre ? De plus, je voudrais savoir si il était compliqué (pour un débutant) d'inclure le titre de la page dans l'url ? http://www.monsite.php/article-titre-de-ma-page.html
non mais c´est pas simple non plus... ;-) Les ancrages servent à limiter l´application de la règles. Maintenant, il te faut trouver le bon chemin. C´est vrai que logiquement s´il s´agit d´un répertoire, ce serait plutot: RewriteRule rep/file.html /(rep/ ou non)file.php....
Je ne suis pas un pro de l'expression régulière et j'ai donc un peu galéré pour arriver à mes fins. Tout ça pour dire que j'ai beaucoup chercher sur l'url rewriting et voici les liens les plus intéressant : http://www.webmaster-hub.com/publication/article5.html http://www.webmaster-hub.com/publication/article15.html http://httpd.apache.org/docs/1.3/misc/rewriteguide.html http://www.webmaster-experience.net/article-article-2.html http://httpd.apache.org/docs/2.0/misc/rewriteguide.html http://developpeur.journaldunet.com/tutoriel/php/020413php_urlrewriting2.shtml http://developpeur.journaldunet.com/tutoriel/php/020407php_urlrewriting.shtml http://www.sam-mag.com/P1,1,5,401,,,default.aspx http://www.asp-php.net/tutorial/asp-php/url_rewriting.php http://www.apachefrance.com/Manuels/Apache_1.3_VF/mod/mod_rewrite.html#RewriteEngine Et pour débuter en expressions régulière : En php ou ASP http://www.asp-php.net/tutorial/asp-php/regexp.php En JAVA http://www.laltruiste.com/document.php?url=http://www.laltruiste.com/coursjava/regexp_constructions_speciales.html En javascript http://www.laltruiste.com/document....e.com/coursjavascript/expression_methode.html Mais il faut toujours garder en tête que le fichier htaccess risque d'être différent suivant l'hébergeur et sa config, en tout ca c'est ce que j'ai constaté entre Imingo et OVH.
Merci pour tous ces liens, je connaissais déjà la majorité d'entre eux. En ce qui concerne ma demande pour afficher le titre dans l'url, est ce que quelqu'un peux m'aiguiller ? Je ne sais pas si il faut créer une requete SQL avant, qui va chercher le titre dans la base de données ou si il faut le mettre en dur dans le htaccess ... etc Pouvez-vous m'expliquer la démarche à suivre s'il vous plait ?
Ben oui le mieux est de récupérer le titre dans ta base, et de créer donc tes liens sous la forme: titre...-tes var.html puis dans la règle de rewrite, tu rajoutes un truc du genre [^-]+-... qui correspond au titre de ta page. et qui ne sert évidemment à rien à part au référencement...
Donc, si j'ai bien compris, il faut que je modifie à la main le .htaccess ? Il n'y a pas moyen de le faire dynamiquement ? (peut-être avec fopen() en php ?)
Je suis si désepérant que ça :lol: bon, je vais me débrouiller avec ce que j'ai compris alors Merci en tout cas d'avoir résolu mon problème initial
tu génères dynamiquement tes liens: /titredetonlien-variable-variables.html et dans ton htacces tu fais ça: RewrireRule ^rep/[^-]+-([^-]+)-([^-]+)\.html$ /rep/file.php?var1=$1&var2=$2 ou un truc dans le genre.. C´est compréhensible ?????????
Ok, merci, mais je découvre vraiment l'url rewriting, alors j'ai pas encore toute la logique. Mais ça va aller avec tout ça, merci correiaj