URL REWRITING EN PHP (RESPECTE LES RÉGLES DU MOD_REWRITE)

cs_Shisui Messages postés 34 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 17 janvier 2007 - 18 août 2005 à 14:20
cs_moumous Messages postés 10 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 12 février 2009 - 27 janv. 2011 à 12:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/33296-url-rewriting-en-php-respecte-les-regles-du-mod-rewrite

cs_moumous Messages postés 10 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 12 février 2009
27 janv. 2011 à 12:57
Bonjour à tous

Ce script est vraiment intéressant notamment pour faire passer wordpress mu sur free. Néanmoins ca ne fonctionne pas. Voila le .htaccess de base pour wordpress mu :

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

et Voila les deux modification quelques modifications approtées :

ligne 123 : include("http://".$_SERVER["HTTP_HOST"]."/".$this->getPageVars($this->url_sortie,"page"));
ligne 344 :if (!file_exists("http://".$_SERVER["HTTP_HOST"]."/".$_SERVER["REQUEST_URI"])) {
ligne 346 : }

et le rewritemod :
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Voila es que quelqu'un à une idée de pourquoi ca ne marche pas (page blanche !)
jphilippev Messages postés 253 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 5 décembre 2008 1
9 mars 2009 à 18:47
salut c'est possible de configurer la réécriture genre de passer de page.php?produit=1 à chaussure-nike.php?? dsl pour la pub lol
heriquet Messages postés 13 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 20 janvier 2008
15 juil. 2008 à 11:28
Excellent code ! Je vais l'utiliser...

Petite proposition d'amélioration...

Ne serait-il pas intéressant de mettre le code de la fonction "OuvrirFichier" dans un constructeur ?

De toute facon il sera appelé et il n'y a pas de paramètre...
alahassarodriguez Messages postés 19 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 12 avril 2008
9 févr. 2008 à 11:29
Bonjour, voilà j'essaie d'utiliser le code de Shisui, mais j'obtiens comme erreur

The requested URL /International students/index_files/projets.html was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Voilà ce que j'ai mis dans mon .rewritemod:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^projets\.html$ ../activites/activites.php [L]

et dans mon .htaccess:
ErrorDocument 404 /index_files/urlrewriting.php

Merci de votre aide!
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
17 mai 2006 à 21:16
Je n'arrive pas à utiliser ton code sur PHP4 (c'est dommage ...) Mais bon c'est quand même génial comme code ! XD
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
24 avril 2006 à 23:25
10/10 Il n'y a pas d'autre note pour cette exellente source ! Bonne chance pour la suite ^_^ ! En tout cas j'attends la mise à jour avec impatience :-P
cs_Shisui Messages postés 34 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 17 janvier 2007
28 févr. 2006 à 14:37
J'ai testé ça avec l'extesion LiveHttpHeaders de firefox et je reçois bien le header 200 OK

Quant à l'erreur citée plus haut elle est corrigée mais je n'ai pas mis à jour ici, et pour répondre à la question du dev je l'avais un peu oublié mais vu que ya du monde qui s'y interesse je vais surement m'y remettre :)
cz1702 Messages postés 119 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 6 novembre 2008 3
2 févr. 2006 à 20:39
Tout d'abord félicitation pour ce code !! j'ai du faire quelque modification pour que ce script marche su free mais maintenant ça marche nickel !! Le seul problème est que les pages ne sont pas indexé sur google c'est peut être du au fait que le header reste 404 (vu avec http://tools.apocalx.com/entete-http/)!! Suis je le seul à avoir ces problèmes ???
cs_touxe Messages postés 1 Date d'inscription dimanche 29 décembre 2002 Statut Membre Dernière intervention 29 janvier 2006
29 janv. 2006 à 21:06
Vraiment tres bonne classe. Tres utiles. J'utilisais jusque maintenant isapirewrite pour IIS6 mais je crois que je vais utiliser ta classe. (Il faudrais que je teste la rapidité avec les deux solutions). Par contre je vais rajouter la possibilité de logger les réécritures qui sont effectuées comme dans le mod_rewrite ... tres pratique pour comprendre ce qu'il se passe quand ca ne marche pas.
J'attend la nouvelle version avec impatience.

Bon courage et encore une fois bon boulot !
Touxe
madvic Messages postés 21 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 juin 2018
16 janv. 2006 à 16:36
Je comprend, c'etais du conditionnel !
Est ce que le dev avance ? Chui impatient !
madvic Messages postés 21 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 9 juin 2018
16 janv. 2006 à 16:22
Désolé mais moi je n'y arrive pas !!
J'ai bien mis mon code rewriting dans le fichier .rewritemod , mis dans .htaccess la ligne "ErrorDocument 404 /muscade/urlrewriting.php" sans les guillemets et rien ne se passe à par une erreur que j'ai corrigé :

Warning: Missing argument 2 for erreur() in g:\easyphp\www\muscade\urlrewriting.php on line 191

Warning: Cannot modify header information - headers already sent by (output started at g:\easyphp\www\muscade\urlrewriting.php:191) in g:\easyphp\www\muscade\urlrewriting.php on line 198

J'ai donc rajouté ="en" à l'argument 2 à la ligne 191 :
function erreur($num "404",$langue"en",$redir = FALSE) {

Voilà.
cs_Shisui Messages postés 34 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 17 janvier 2007
20 sept. 2005 à 18:27
Wala, nouvelle version du script, en classe cette fois ci et avec de nouvelles fonctionalités comme le chainage d'urls, la prise en charge de la casse, les redirections 301 / 302, les erreurs 403 Forbidden et 410 Gone, etc :)

Voili voulou dites moi ce que vous en pensez :)

Je me remet à bosser moi =) Je suis en train de faire les RewriteCond et ca a l'air d'avancer vite ^^

@++
aqw2003 Messages postés 1 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 28 août 2005
28 août 2005 à 17:01
Tu n'aurais pas une astuce pour le redirection 301 ?
Inekman Messages postés 291 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 30 juin 2006
20 août 2005 à 03:06
Complètement trop bien ce code. Bien commenté de surcroît.

Bravo.

Inekman.10/10.
massacr Messages postés 233 Date d'inscription vendredi 2 juillet 2004 Statut Membre Dernière intervention 4 janvier 2007
19 août 2005 à 12:25
Très bonne source. Je ne me suis pour l'instant pas beaucoup intéréssé à l'URL REWRITING, je compte m'y intéréssé bientôt. Et ce genre de sources un à excellent intéret didactique. Merci
A+
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 août 2005 à 11:11
plus de rapidité :-)
cs_Shisui Messages postés 34 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 17 janvier 2007
19 août 2005 à 11:06
Voilà c'est corrigé mais qu'est ce que ca apporte ?
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 août 2005 à 10:44
while ($i <= count($vars) - 1)

définit ton count() avant

$nb=count($vars);
while ($i < $nb)
cs_Shisui Messages postés 34 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 17 janvier 2007
19 août 2005 à 10:08
Merci, c'est encourageant pour la suite :)
Quant aux erreurs c'est réglé, j'ai rajouté quelques conditions et changé quelques petites choses (notemment au niveau des boucles et des fonctions) ce qui fait que plus aucune erreur n'apparait avec l'error_reporting à E_ALL :)
Voilà les changement :
Dans la fonction regle_info,
if (count($regle) != 3) {
return FALSE;
}
a été rajouté pour éviter le passage de string qui ne sont pas des régles (condition minime mais ca évite des erreurs :) )

Dans la fonction url_rewrite :
while ($i <= 9) {
a été changé en while ($i <= count($vars) - 1) { (erreur de ma part :/) pour eviter les "Offset X undefined"

Dans le script, la boucle for : for ($i=0; $i <= $lignes_tot; $i++) a été changée (le script prenait une ligne en trop et ratait la premiére)

Voilà :) Si quelqu'un trouive d'autre bug qu'il le signale :)

Sinon je suis en train de passer le script en class, on m'a dit que ca accélérerait le script :)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
19 août 2005 à 00:26
Salut,

"Ca n'est pas vraiment un bug mais le serveur de Free affiche des alertes et notices lorsque la page ne correspond à aucun masque, d'ou la présence de la ligne error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);"

à toi de le gérer pour que ça ne fasse pas ça, mets l'error_reporting à E_ALL

Sinon très bonne source, j'aime bien le principe et ça change du reste. 10/10 :-)

a +
cs_Shisui Messages postés 34 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 17 janvier 2007
18 août 2005 à 14:20
Vu 28 fois et aucun commentaire ? :/ *snif*
Rejoignez-nous