Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/08/2011, 14h49   #1
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Par défaut création de regex

Bonjour,

J'ai pour objectif de modifier le nom et l'emplacement de trois dossiers de mon site web. Cela implique de changer les liens hypertextes pointant sur ces dossiers. Les articles à modifier sont dans une base de données mysql.

Ainsi, il faudrait faire en sorte de modifier les urls suivantes :


Code :
1
2
/balades_vtt/voir_balades_vtt.php
/balades_pieds/voir_balades_pieds.php
en :
Code :
1
2
/php/balade/voir_balade.php

Les urls contiennent deux paramètres qu'il ne faut pas modifier :

Code :
?numdep=68&voir_balade=161

Toujours dans le même principe, il faudrait modifier les URL's contenants :

en :
Code :
1
2
/php/test/voir_test.php
Sachant que cette url prend un paramètre :

Est-ce qu'un update des différentes tables avec un preg_replace() est une bonne solution ?
Si oui, pouvez-vous me proposer un exemple ?

Par avance merci.
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 14h53   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Tu peux t'en sortir en mettant des redirections 301, c'est une pratique courante pour conserver un référencement quand on "bouge" des pages:
.htaccess (ou conf Apache)
Code :
Redirect permanent /oldpage.html http://www.example.com/newpage.html
Les paramètres de l'URL sont préservés.

Voir: http://en.wikipedia.org/wiki/URL_redirection
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 14h59   #3
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Bonjour et merci pour la réponse,

Je n'ai donc pas besoin de faire cela en dure ! Pour autant, est-ce vraiment la bonne solution ?

Par avance merci.
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 15h02   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
C'est je pense la meilleure solution car, comme je l'ai dit, elle préserve le référencement des pages.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 15h03   #5
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Citation:
Envoyé par Benjamin Delespierre Voir le message
C'est je pense la meilleure solution car, comme je l'ai dit, elle préserve le référencement des pages.
Un grand merci pour cette astuce.
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 15h03   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Tu peux également regarder sur le lien wikipedia pour voir les autres techniques de redirections
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 15h47   #7
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
J'ai essayé ça :

Code :
Redirect permanent /balades_vtt/voir_balades_vtt.php http://www.partir-en-vtt.com/php/balades/voir_balade.php?type_balade=0
Le problème est que ça ne laisse pas passer les paramètres

Il faudrait faire passer ça :

Code :
http://www.partir-en-vtt.com/balades_vtt/voir_balades_vtt.php?numdep=88&voir_balade=106

à ça :

Code :
http://www.partir-en-vtt.com/balades/voir_balade.php?numdep=88&voir_balade=106&type_balade=0
Il faut donc rajouter un paramètre et garder les anciens, est-ce possible ?
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 16h12   #8
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Dans ce cas on va être obligé de faire ça avec des réécritures d'url:
Code :
1
2
3
4
5
6
7
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !favicon.ico$
  RewriteRule ^balades_vtt/voir_balades_vtt\.php$ balades/voir_balade.php?type_balade=0 [L]
</IfModule>
Et tu rajoutes toutes les RewriteRule qu'il faut
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/08/2011, 16h22   #9
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Citation:
Envoyé par Benjamin Delespierre Voir le message
Dans ce cas on va être obligé de faire ça avec des réécritures d'url:
Code :
1
2
3
4
5
6
7
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !favicon.ico$
  RewriteRule ^balades_vtt/voir_balades_vtt\.php$ balades/voir_balade.php?type_balade=0 [L]
</IfModule>
Et tu rajoutes toutes les RewriteRule qu'il faut

Et ça s'ajoute dans le fichier.htaccess ?
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 16h26   #10
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Oui.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 16h29   #11
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Citation:
Envoyé par Benjamin Delespierre Voir le message
Oui.

un grand merci, cela semble fonctionner à merveille
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 16h42   #12
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Citation:
Envoyé par heretik25 Voir le message
un grand merci, cela semble fonctionner à merveille
Encore une fois, j'ai parlé trop vite,


Lorsque l'on vient de google, ce lien ne fonctionne pas :

Code :
http://www.partir-en-vtt.com/balades_pieds/voir_balades_pieds.php?numdep=25&voir_balade=348

alors qu'il y a bien un :

Code :
 RewriteRule ^balades_pieds/voir_balades_pieds\.php$  /php/balades/voir_balade.php?type_balade=1 [L]
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 17h18   #13
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Alors j'ai jamais essayé mais bon, tentons:
Code :
1
2
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^balades_pieds/voir_balades_pieds\.php$ /php/balades/voir_balade.php?type_balade=1&$1 [R=301,L]
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/08/2011, 17h27   #14
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
En faisant :

Code :
1
2
3
4
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{QUERY_STRING} ^(.*)$
  RewriteRule ^balades_pieds/voir_balades_pieds\.php$ /php/balades/voir_balade.php?type_balade=1&$1 [R=301,L]
Cela change l'url mais n'ajoute pas les paramètres :

Code :
http://www.partir-en-vtt.com/php/balades/voir_balade.php?type_balade=1
et puis après, j'ai une redirection vers l'accueil car l'id n'existe pas (sécurité)

il manque donc par exemple :

Code :
?numdep=25&voir_balade=348
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 17h33   #15
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Je vais déplacer la conversation vers le forum Apache parce que ça commence à dépasser mes compétences.

Je suis sûr qu'une solution plus simple que celle évoquée ci-dessus pourrait fonctionner correctement.

Bref, essayons ça dans l'immédiat:
Code :
1
2
3
4
5
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{QUERY_STRING} ^numdep=([0-9]*)&voir_balade=([0-9]*)$
  RewriteRule ^balades_pieds/voir_balades_pieds\.php$ /php/balades/voir_balade.php?type_balade=1&numdep=$1&voir_balade=$2 [R=301,L]
</IfModule>
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/08/2011, 17h36   #16
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Voilà le résultat à partir d'une recherche google :


Code :
http://www.partir-en-vtt.com/php/balades/voir_balade.php?type_balade=1&numdep=&voir_balade=
Si c'est à partir du site, ça fonctionne
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 17h47   #17
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Arf je me suis trompé de syntaxe:
Code :
1
2
3
4
5
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{QUERY_STRING} ^numdep=([0-9]*)&voir_balade=([0-9]*)$
  RewriteRule ^balades_pieds/voir_balades_pieds\.php$ /php/balades/voir_balade.php?type_balade=1&numdep=%1&voir_balade=%2 [R=301,L]
</IfModule>
(déformation professionnelle dûe à l'usage répété de PHP).
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 17h52   #18
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Citation:
Envoyé par Benjamin Delespierre Voir le message
Arf je me suis trompé de syntaxe:
Code :
1
2
3
4
5
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{QUERY_STRING} ^numdep=([0-9]*)&voir_balade=([0-9]*)$
  RewriteRule ^balades_pieds/voir_balades_pieds\.php$ /php/balades/voir_balade.php?type_balade=1&numdep=%1&voir_balade=%2 [R=301,L]
</IfModule>
(déformation professionnelle dûe à l'usage répété de PHP).
Ah je crois qu'on tient le bon bout ! Cela fonctionne à partir de google
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 14h23   #19
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Bonjour,

Je n'avais pas attention hier mais il y a encore un problème sur une redirection à partir de google


Celle-la ne fonnctionne pas :
Code :
1
2
3
RewriteCond %{QUERY_STRING} ^voir_test=([0-9]*)$
RewriteRule ^test/voir_test\.php$ /php/test/voir_test.php?voir_test=%1 [R=301,L]
:

alors que celle-là fonction

Code :
1
2
3
	
RewriteCond %{QUERY_STRING} ^voir_periples=([0-9]*)$
RewriteRule ^periples_vtt/voir_periples\.php$ /php/periples/voir_periple.php?voir_periple=%1 [R=301,L]
je ne vois pas pourquoi la redirection ne se fait pas pour les tests


EDIT : Si je met un dossier "test" vide a la racine du site, cela fonctionne. Vous pouvez m'expliquer pourquoi ?
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 17h49   #20
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 285
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 285
Points : 8 570
Points : 8 570
Ca veut dire quoi "ne fonctionne pas" ? Tu testes avec quelle URL et quel est le comportement observé ?
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h15.


 
 
 
 
Partenaires

Hébergement Web