Robix Posté 27 Juin 2008 Posté 27 Juin 2008 Bonjour à tous, J'ai mis en place l'URL Rewriting sur mon site en local sur Easyphp, cela marche nickel avec : httpd.conf : <Directory "C:/Logiciels/EasyPHP/www/*******">Options FollowSymLinks IndexesRewriteEngine onRewriteCond $1 !^(panel|admin|images|sitemap\.xml|style\.css|favicon\.ico|robots\.txt) [NC]RewriteRule ^(.*)$ index.php</Directory> (Le but étant de tout rediriger vers index.php.) J'ai voulu le basculé sur OVH (hébergement mutualisé 60gp) en faisant un .htaccess : RewriteEngine onRewriteCond $1 !^(panel|admin|images|pop-up\.php|imprimer\.php|afficher_image\.php|imprimer_guide\.php|sitemap\.xml|style\.css|favicon\.ico|robots\.txt) [NC]RewriteRule .* /index.php [L] Le htaccess est placé dans le bon dossier (/www/), j'ai tout testé pendant 2 jours, impossible à faire marcher... Le .htaccess ne semble pas pris en compte par apache d'OVH : quand j'écris n'importe quoi sur la premiere ligne (RewriteEngine on). Il me sort Internal Server Error quand j'écris n'importe quoi sur une des lignes suivantes : il ne me dit rien, les règles de réécriture ne sont pas absolument pas prises en compte. Est ce que quelqu'un aurait une idée pour me faire avancer ? Merci d'avance Robin
pluriels Posté 28 Juin 2008 Posté 28 Juin 2008 Je ne suis pas un pro de la réécriture, mais je vois une différence là : RewriteRule ^(.*)$ index.php RewriteRule .* /index.php [L]
Robix Posté 29 Juin 2008 Auteur Posté 29 Juin 2008 Bonsoir, J'ai bien sur tester toutes les configurations possibles (les ^, les $, les / , etc.) rien n'y fait. Qualqu'un aurait-il une idée ? Merci d'avance Robin
iNCiTE Web Posté 30 Juin 2008 Posté 30 Juin 2008 |robots\.txt) [NC] Il manque pas un $ avant le [NC] par hasard ; Mais c'est étonnant que ça fonctionne en local ; tu es sûr d'avoir la même chose ?? (à part le /index.php, obligatoire chez OVH)
Dan Posté 30 Juin 2008 Posté 30 Juin 2008 Je me demande tout de même où mod_rewrite va chercher ton $1 dans "RewriteCond $1 .... "
iNCiTE Web Posté 30 Juin 2008 Posté 30 Juin 2008 Arfffff j'avais même pas vu du coup !! ça n'a pas l'ai de déranger Apache/Win en tous cas...
Robix Posté 30 Juin 2008 Auteur Posté 30 Juin 2008 |robots\.txt) [NC] Il manque pas un $ avant le [NC] par hasard ; Mais c'est étonnant que ça fonctionne en local ; tu es sûr d'avoir la même chose ?? (à part le /index.php, obligatoire chez OVH) Je crois que le ^ et le $ sont facultatifs (mais plus rigoureux certes). Cela fonctionne en local avec et sans $... Je me demande tout de même où mod_rewrite va chercher ton $1 dans "RewriteCond $1 .... " Hum oui effectivement c'est étrange (je suis pas spécialiste de mode rewrite) mais en tout cas il me prends bien en compte ma condition (sur Apache en local). Ce que je ne comprends pas c'est que juste en placant mon .htaccess sur mon mut OVH (dossier /www/) contenant (cf http://guide.ovh.com/HtaccessModRewrite ): RewriteEngine OnRewriteRule .* /testing.php (également testé ^(.*)$, avec ou sans / etc) Rien ne se passe quand je tape www.monsite.com/blablabla. (Il ne va pas chercher testing.php, il met Page Introuvable). Y a-t-il moyen de tester simplement le fonctionnement de fichier htaccess sur mon compte ? Merci...
Dan Posté 30 Juin 2008 Posté 30 Juin 2008 Ce que je ne comprends pas c'est que juste en placant mon .htaccess sur mon mut OVH (dossier /www/) contenant (cf http://guide.ovh.com/HtaccessModRewrite ): RewriteEngine OnRewriteRule .* /testing.php (également testé ^(.*)$, avec ou sans / etc) Rien ne se passe quand je tape www.monsite.com/blablabla. (Il ne va pas chercher testing.php, il met Page Introuvable). Assez logique, vu que tu rediriges TOUT, y compris donc testing.php Tu devrais utiliser par exemple: RewriteEngine OnRewriteRule testing\.php - [L]RewriteRule .* /testing.php [L] Pense aussi à utiliser le flag [L] (pour Last) parce qu'il est inutile de parcourir le reste de la liste lorsqu'un match est trouvé. Dan
iNCiTE Web Posté 30 Juin 2008 Posté 30 Juin 2008 Je crois que le ^ et le $ sont facultatifs (mais plus rigoureux certes). Cela fonctionne en local avec et sans $... Euh peut être mais soit tu mets les 2, soit aucun... le fait que Apache pour Windows accepte tout et n'importe quoi n'est pas vraiment une bonne référence ; il n'est disponible qu'à des fins de tests uniquement ; il peut donc avoir des comportements imprévus. Hum oui effectivement c'est étrange (je suis pas spécialiste de mode rewrite) mais en tout cas il me prends bien en compte ma condition (sur Apache en local). Il faut virer le $1 déjà c'est sûr. Edit : grilled par Dan !
Robix Posté 30 Juin 2008 Auteur Posté 30 Juin 2008 Il faut virer le $1 déjà c'est sûr.La condition marche bien sur easyphp pourtant... RewriteEngine OnRewriteBase /RewriteRule ^testing\.php$ / [L]RewriteRule ^(.*)$ /testing.php [L] ne fonctionne toujours pas... (avec ou sans RewriteBase /) Ce que je comprends moins c'est que si je fait un htaccess : RewriteEngine OnazertyRewriteBase /RewriteRule ^testing\.php$ / [L]RewriteRule ^(.*)$ /testing.php [L] Il ne me met pas d'erreur. Si je met : azertyRewriteEngine OnRewriteBase /RewriteRule ^testing\.php$ / [L]RewriteRule ^(.*)$ /testing.php [L] Il me met : Internal Server Error Bizarre non ?
iNCiTE Web Posté 30 Juin 2008 Posté 30 Juin 2008 Relis bien ce que Dan t'a écrit : RewriteRule ^testing\.php$ - / [L] Tu as oublié le "-" qui précise d'ignorer le fichier testing.php, sinon on tourne en rond. Il suffit pas de recopier (sans se tromper lol), c'est bien aussi de comprendre ;-)
Robix Posté 30 Juin 2008 Auteur Posté 30 Juin 2008 Relis bien ce que Dan t'a écrit : RewriteRule ^testing\.php$ - / [L] Tu as oublié le "-" qui précise d'ignorer le fichier testing.php, sinon on tourne en rond. Il suffit pas de recopier (sans se tromper lol), c'est bien aussi de comprendre ;-) Je ne savais pas à quoi servait le "-". Cela ne marche toujours pas, mais que pense tu du reste : erreur non detecté à partir de la 2eme ligne ?
iNCiTE Web Posté 30 Juin 2008 Posté 30 Juin 2008 Ton mod_rewrite est bien activé en local ?? par défaut dans EasyPHP ce n'est pas le cas il me semble... LoadModule rewrite_module modules/mod_rewrite.so dans httpd.conf Ce qui expliquerait pourquoi il ignore l'erreur une fois dans la rewrite et pas dans le fichier .htaccess
Robix Posté 30 Juin 2008 Auteur Posté 30 Juin 2008 Salut à tous, Le problème est résolu, cela était du à un mauvais formatage de mon htaccess (édité sous notepad++), avec le blocnote cela est passé tout de suite. Bref erreur à la con qui m'a fait tourné en rond un bon bout de temps. En tout cas merci à tous pour votre patience Robin ps: htaccess final RewriteEngine onRewriteRule ^(index.php|admin|images|pop-up\.php|imprimer\.php|afficher_image\.php|imprimer_guide\.php|sitemap\.xml|style\.css|favicon\.ico|robots\.txt) - [L]RewriteRule ^(.*)$ /index.php [L] Je redirige tout vers index.php et c'est lui qui traite la page demandé : CODE <?php // MODE DEBUG //echo $_SERVER['REQUEST_URI']; $racine ='/'; if (ereg('^'.$racine.'+$', $_SERVER['REQUEST_URI'], $req)){ include('front.php'); } else if (ereg('^'.$racine.'(fr|en)$', $_SERVER['REQUEST_URI'], $req)){ header("Location:".$req[1].'/'); } else if (ereg('^'.$racine.'(fr|en)/$', $_SERVER['REQUEST_URI'], $req)){ $lang = $req[1]; include('lang_'.$lang.'.php'); $_GET['page'] = 'accueil'; $_GET['lang'] = $lang; include 'index.inc.php'; } else{ if(ereg('^'.$racine.'(fr|en)/([a-zA-Z0-9\.&-]*)\?mode=([a-zA-Z0-9\.]+)\&cat=([a-zA-Z0-9\.]+)$', $_SERVER['REQUEST_URI'], $req)){ if ($req[1]=='fr'){ $lang = 'fr'; include('lang_fr.php'); }else{ $lang = 'en'; include('lang_en.php'); } if ($req[2]==*************| $req[2]==**************){ $_GET['page'] = 'location'; $_GET['lang'] = $lang; $_GET['mode'] = $req[3]; $_GET['cat'] = $req[4]; include 'index.inc.php'; }else{ echo ' Mauvaise URL : 404'; die(); } }else if(ereg('^'.$racine.'(fr|en)/([a-zA-Z0-9\.&-]*)\?mode=([a-zA-Z0-9\.]+)$', $_SERVER['REQUEST_URI'], $req)){ if ($req[1]=='fr'){ $lang = 'fr'; include('lang_fr.php'); }else{ $lang = 'en'; include('lang_en.php'); } if ($req[2]==********| $req[2]==***********){ $_GET['page'] = 'location'; $_GET['lang'] = $lang; $_GET['mode'] = $req[3]; include 'index.inc.php'; }else{ echo ' Mauvaise URL : 404'; die(); } }else if(ereg('^'.$racine.'(fr|en)/([a-zA-Z0-9\.&-]*)\?appart=([a-zA-Z0-9\.]+)$', $_SERVER['REQUEST_URI'], $req)){ // Langue if ($req[1]=='fr'){ $lang = 'fr'; include('lang_fr.php'); }else{ $lang = 'en'; include('lang_en.php'); } // Pages if ($req[2]==*************| $req[2]==*************){ $_GET['page'] = 'pre-reservation'; $_GET['lang'] = $lang; $_GET['appart'] = $req[3]; include 'index.inc.php'; }else{ echo ' Mauvaise URL : 404'; die(); } }else if (ereg('^'.$racine.'(fr|en)/([a-zA-Z0-9\.&-]*)$', $_SERVER['REQUEST_URI'], $req)){ // Langue if ($req[1]=='fr'){ $lang = 'fr'; include('lang_fr.php'); }else{ $lang = 'en'; include('lang_en.php'); } // Pages if ($req[2]=='' | $req[2]=='home.html' | $req[2]=='accueil.html'){ $_GET['page'] = 'accueil'; } ... else if ($req[2]=='tignes.html'){ $_GET['page'] = 'tignes'; } else{ echo 'Page inconnu : 404'; die(); } $_GET['lang'] = $lang; include 'index.inc.php'; }else{ echo ' Mauvaise URL : 404'; die(); } } ?>
Invité Posté 2 Juillet 2008 Posté 2 Juillet 2008 tout est résolu, mais n'empêche, tu n'as pu éviter d'incriminer fortement ton hébergeur, qui, sur le coup, n'y étais pour rien... "*** m'a tuer". Un peu fort quand même. Etait-ce pour attirer l'oeil ? J'ai vu un thread là dessus sur WRI, et effectivement, pour attirer du monde, il faut un titre percutant !
Dan Posté 3 Juillet 2008 Posté 3 Juillet 2008 tout est résolu, mais n'empêche, tu n'as pu éviter d'incriminer fortement ton hébergeur, qui, sur le coup, n'y étais pour rien... C'est malheureusement courant ! La faute est toujours ailleurs et jamais chez soi :!: Je modifie le titre (ainsi que ton post) Dan
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant