URL REWRITING EN PHP (RESPECTE LES RÉGLES DU MOD_REWRITE)
cs_Shisui
Messages postés34Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention17 janvier 2007
-
18 août 2005 à 14:20
cs_moumous
Messages postés10Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention12 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.
cs_moumous
Messages postés10Date d'inscriptionmercredi 12 mars 2003StatutMembreDernière intervention12 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]
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]
Voila es que quelqu'un à une idée de pourquoi ca ne marche pas (page blanche !)
jphilippev
Messages postés253Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention 5 décembre 20081 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és13Date d'inscriptiondimanche 27 juillet 2003StatutMembreDernière intervention20 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és19Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention12 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és373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 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és373Date d'inscriptionsamedi 9 juillet 2005StatutMembreDernière intervention11 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és34Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention17 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és119Date d'inscriptionmercredi 23 juillet 2003StatutMembreDernière intervention 6 novembre 20083 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és1Date d'inscriptiondimanche 29 décembre 2002StatutMembreDernière intervention29 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és21Date d'inscriptionvendredi 3 janvier 2003StatutMembreDerniè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és21Date d'inscriptionvendredi 3 janvier 2003StatutMembreDerniè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és34Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention17 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és1Date d'inscriptionjeudi 7 août 2003StatutMembreDernière intervention28 août 2005 28 août 2005 à 17:01
Tu n'aurais pas une astuce pour le redirection 301 ?
Inekman
Messages postés291Date d'inscriptiondimanche 2 février 2003StatutMembreDernière intervention30 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és233Date d'inscriptionvendredi 2 juillet 2004StatutMembreDerniè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és9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 19 août 2005 à 11:11
plus de rapidité :-)
cs_Shisui
Messages postés34Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention17 janvier 2007 19 août 2005 à 11:06
Voilà c'est corrigé mais qu'est ce que ca apporte ?
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 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és34Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention17 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és9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 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és34Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention17 janvier 2007 18 août 2005 à 14:20
27 janv. 2011 à 12:57
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 !)
9 mars 2009 à 18:47
15 juil. 2008 à 11:28
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...
9 févr. 2008 à 11:29
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!
17 mai 2006 à 21:16
24 avril 2006 à 23:25
28 févr. 2006 à 14:37
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 :)
2 févr. 2006 à 20:39
29 janv. 2006 à 21:06
J'attend la nouvelle version avec impatience.
Bon courage et encore une fois bon boulot !
Touxe
16 janv. 2006 à 16:36
Est ce que le dev avance ? Chui impatient !
16 janv. 2006 à 16:22
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à.
20 sept. 2005 à 18:27
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 ^^
@++
28 août 2005 à 17:01
20 août 2005 à 03:06
Bravo.
Inekman.10/10.
19 août 2005 à 12:25
A+
19 août 2005 à 11:11
19 août 2005 à 11:06
19 août 2005 à 10:44
définit ton count() avant
$nb=count($vars);
while ($i < $nb)
19 août 2005 à 10:08
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 :)
19 août 2005 à 00:26
"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 +
18 août 2005 à 14:20