URL Rewriting de base

Nouveau WRInaute
Voila l'url que je cherche a convertir :

http://www.MONSITE.com/?rubrique=LENOM&contenu=LENOM

Je utilise des speudos frames Php :

<?php
if (isset($_GET["rubrique"])) $rubrique = $_GET["rubrique"];
else $rubrique = 4;
switch ($rubrique) {
case home : include("home.php"); break;
case lePressingMix : include("pressingmix/pressingmix.php"); break;
case LENOM : include("dossier/LENOM.php"); break;
case AUTRENOM : include("autredossier/AUTRENOM.php"); break;
}
?>


Sachant que je réutilise le même code dans la page LENOM.php par exemple pour réinstaller une nouvelle nav et de nouvelle page qui m'amene a créer le fameux CONTENU visible dans l'url.

Je cherche ma solution depuis un bon moment et la je suis largué…
Si un expert pouvait donner un coup de main à un GROS Débutant.
Merci d'avance.
Cédric
 
Nouveau WRInaute
Non marche pas :

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@monsite.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


:cry:
 
Nouveau WRInaute
leblanchisseur a dit:
http://www.MONSITE.com/(...)?rubrique=LENOM&contenu=LENOM

je vois que tu ne précise pas le nom de ta page dans laquelle est contenu ton code (switch), car elle doit bien s'appeler index.php pour le code donné plus haut (y'a peu de chance que ce soit autre chose mais on ne sait jamais).

Ensuite, pour détailler un peu plus et rectifier une partie du code déjà donné:

Code:
RewriteRule /(.*).[b](htm|html)[/b] index.php?rubrique=$1&contenu=$1 [L]

Donc au final la page lenom.htm ou lenom.html appellera donc index.php?rubrique=lenom&contenu=lenom

Fais également attention au majuscules, et ne surtout pas enlever le RewriteEngine on
Bon je suis pas expert, mais j'espère t'avoir éclairer un peu plus
 
WRInaute impliqué
leblanchisseur a dit:
ne dois-je pas spécifié plus que ça :

Code:
RewriteRule /(.*).php index.php?rubrique=$1&contenu=$1 [L]

ormis le rewrite on.

:cry:


Déjà à mon avis c'est plus un truc comme ça qui peut marcher :
Code:
RewriteRule /(.*).php index.php?rubrique=$1&contenu=$2 [L]

Après j'aurais aussi eu tendance à mettre plus que /(.*).php, genre ^prod([0-9]*)-([0-9]*).*
ou [*]*-prod([0-9]*)-([0-9]*)

Mais je suis loin d'être un tueur en mod rewrite...

En tous cas deux paramètres c'est $1 et $2 pas deux fois $1 et il faut bien indiquer ou tu les places dans ton rewrite (d'ou les ([0-9]*) ou ([a-zA-Z]*) si c'est des lettres)

++
 
Nouveau WRInaute
On se fait un recap :

Code:
RewriteEngine On
RewriteRule /[*]*-prod([0-9]*)-([0-9]*).php index.php?rubrique=$1&contenu=$2 [L]

La maintenant ça ne me fait plus planter… est-ce la bonne voix ?
Mais je ne visualise toujours pas mon url réecrit.
Aurais-je autre chose à faire ? :?
Ou suis-je encore à côté de la plaque !
 
WRInaute impliqué
bah yep c'est un truc dans le genre, et j'ai fait une tite erreur, c'est [.] et pas [*] bien que ça n'ai pas l'air de changer grand chose.

Tu peux mettre ce que tu veux à la place de prod (genre pr pour des url courtes ou produits ou ce que tuv ..)

++
 
Nouveau WRInaute
Ok génial… mais apres n'ai-je pas un autre truc à prévoir ? car la j'ai toujours mes urls du type :

Code:
http://www.MONSITE.com/?rubrique=LENOM&contenu=LENOM


:oops:
 
Nouveau WRInaute
Merci à vous de m'aider… je vais passer pour un débutant et c'est bien ce que je suis :x


ok le .htaccess il semble bien prendre sauf que quend je tape
http://www.MONSITE.com/LENOM-LENOM.html cela ne marche pas…

dois je toucher un truc la :
(Je utilise des speudos frames Php)

Code:
<?php 
if (isset($_GET["rubrique"])) $rubrique = $_GET["rubrique"]; 
else $rubrique = 4; 
switch ($rubrique) { 
case home : include("home.php"); break; 
case lePressingMix : include("pressingmix/pressingmix.php"); break; 
case LENOM : include("dossier/LENOM.php"); break; 
case AUTRENOM : include("autredossier/AUTRENOM.php"); break; 
} 
?>
ou bien est-ce reelelement dans mes liens qui sont :
Code:
<a href="?rubrique=contact">
et qui doivent devenir
Code:
<a href="contact.html">

///vous regrettez d'avoir croisé mon chemin… :oops:
 
Nouveau WRInaute
:?
:(

je ne trouve vraiment pas la solution a mon probleme……… pfff

je recapitule les differents solutions testé :

Code:
RewriteEngine On
RewriteRule /([a-zA-Z]+)\.html$ /index.php?rubrique=$1 [L]
RewriteRule /([a-zA-Z]+)-([a-zA-Z]+)\.html$ /index.php?rubrique=$1&contenu=$2 [L]

ou

Options +FollowSymlinks
RewriteEngine On
RewriteRule /([^-]+)\.html /index.php?rubrique=$1 [L] 
RewriteRule /([^-]+)-([^.]+)\.html /index.php?rubrique=$1&contenu=$2 [L] 

ou

RewriteEngine on
RewriteRule (.+)\.html$ /index.php?rubrique=$1
RewriteRule (.+)\.(.+)\.html$ /index.php?rubrique=$1&contenu=$2

Maintenant avec ça des que je tape une url du type :

http://monsite.com/nom-nom.html

il me renvoi sur la home et ce même si je tape une url qui n'existe pas du type :
http://monsite.com/nom-nom-existepas.html

J'en perd la logique.

Mon autre probleme vien de la réecriture des liens dans mon code de speudo frame php… ou dois-je faire figurer exastement mais url du type :
nom.nom.html ou bien nom.html

merci de votre aide.
 
WRInaute impliqué
leblanchisseur a dit:
:?

Maintenant avec ça des que je tape une url du type :

http://monsite.com/nom-nom.html

il me renvoi sur la home et ce même si je tape une url qui n'existe pas du type :
http://monsite.com/nom-nom-existepas.html

J'en perd la logique.

Mon autre probleme vien de la réecriture des liens dans mon code de speudo frame php… ou dois-je faire figurer exastement mais url du type :
nom.nom.html ou bien nom.html

merci de votre aide.

donc c'est normal, vu que tu autorise l'injection de n'importe quoi il accepte tout.
Ta vrai url est nom-nom (sans rien de plus), le reste c'est de l'habillage.

L'endroit ou tu peut ajouter du texte pour y mettre par exemple un titre serait donc l'emplacement de existepas, tu le remplace pour le nom de chaque page (là ou est fabriqué le lien avec les deux paramettre nom et nom) et hop il marchera.

en fait je pense que tu as pas bien saisi que nom1 et nom sont le suivit de tes deux parametres originaux, si tu avait index.php?t=bidule&name=nom
cela te ferait du bidule-nom-titre-injectable.html.
Le problème c'est qu'il est possible de rtemplacer "titre injectable " par ce qu'on veux (ou pas d'ailleurs), car apache remplace betement l'* (comme un *.* sur dos), il ne vas quand même pas faire de requète sql pour te trouver si c'est le bon titre!

PAr contre il doit y avoir moyen de proteger cela en php, jor verifier que l'url correspond bien aux vrai titre et au vrai chemin.
Pas dit que ce soit pas trop lourd...

En tous cas, tu verra que ce genre de pb existe sur pratiquement tous les rewriting incluant le titre.

++
 
Discussions similaires
Haut