Mod_Rewrite

Eléphant du PHP | 214 Messages

06 juin 2010, 20:02

Bonjour,

Je fais la reecriture des URL, mais il affiche une page blanche du genre 404, voila le detail de la reecriture:

fichier htaccess:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^mapage-([0-9]+)\.html$   /index.php?rubrique=$1 [L]
Le lien est sous forme de: mapage-1.html
Les pseudo frames sont de la maniere:
<?php

// On récupère la rubrique passée en paramètre
if(isset($_GET["rubrique"])) $rubrique = $_GET["rubrique"];
else $rubrique = ""; 

// On affiche la page associée à la rubrique
switch ($rubrique) 
{
case 'mapage1':
include('page_1.php');
break;
case 'mapage2':
include('page_2.php');
break;
case 'mapage3':
include('page_3.php');
break;
default:
include('accueil.php');
break;
}
?>

Merci pour votre aide

Eléphant du PHP | 314 Messages

07 juin 2010, 10:40

Hello,

petite réponse rapide ( mais efficace ! )
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^mapage-([0-9]+)\.html$   /index.php?rubrique=$1 [L]
Là tu dis que ?rubrique=un nombre
switch ($rubrique) 
{
case 'mapage1':
include('page_1.php');
break;
case 'mapage2':
include('page_2.php');
break;
....
Et là tu fais un switch en attendant un résultat comme mapage1, mapage2...mais rubrique = 1 / 14 / 78 ..... pas mapage1, mapage14, mapage78 !

Éclaircies déjà ce point, je ne pense pas que ça va résoudre tout, mais ce sera déjà un bon point !
Cordialement,
Julien - http://laravel.fr/

Eléphant du PHP | 214 Messages

07 juin 2010, 16:48

Là tu dis que ?rubrique=un nombre
Je veux que ca se soit ?rubrique=mapage1, ?rubrique=mapage2, ainsi de suite

Eléphant du PHP | 314 Messages

07 juin 2010, 16:51

Dans ce cas je pense que
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^mapage-([0-9]+)\.html$   /index.php?rubrique=mapage$1 [L]
devrait te convenir !
Cordialement,
Julien - http://laravel.fr/

Eléphant du PHP | 214 Messages

08 juin 2010, 17:55

J'ai fais ca:

Code : Tout sélectionner

RewriteRule ^index.php/+([a-zA-Z0-9]+)-([a-zA-Z0-9]+)\.html$ index.php?rub=$1&srub=$2
Avec la structure de mon URL est en general: index.php/rub-srub.html, mais je me trouve face a d'autres problemes, je perds la mise en place des styles, les images n'apparaissent pas,...

ViPHP
ViPHP | 5462 Messages

08 juin 2010, 17:59

ouai le coup du slash ca pose des problèmes

pourquoi ne pas directement faire

Code : Tout sélectionner

RewriteRule ^(\w+)-(\w+).html$ index.php?rub=$1&srub=$2
comme ca tu feras direct : rub-srub.html

:wink:

Eléphant du PHP | 214 Messages

08 juin 2010, 19:02

J'ai trouve la solution en mettant comme ca:

Code : Tout sélectionner

RewriteRule ([a-zA-Z0-9]+)\.html$ index.php?rub=$1 RewriteRule ([a-zA-Z0-9]+)-([a-zA-Z0-9]+)\.html$ index.php?rub=$1&srub=$2
Ca me cause un probleme, si le lien est sous forme de: index.php?rub=$1&srub=$2 ca marche pas, mais si le lien est sous forme de index.php?rub=$1, ca marche tres bien

Eléphant du PHP | 214 Messages

08 juin 2010, 19:12

ouai le coup du slash ca pose des problèmes

pourquoi ne pas directement faire

Code : Tout sélectionner

RewriteRule ^(\w+)-(\w+).html$ index.php?rub=$1&srub=$2
comme ca tu feras direct : rub-srub.html

:wink:
Je l'ai applique, maintenant le cas de rub.html ne marche pas, et rub-srub.html marche bien
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(\w+)-(\w+).html$ index.php?rub=$1&srub=$2 [L]

ViPHP
ViPHP | 5462 Messages

08 juin 2010, 19:22

normal le regexp est fais pour 2 paramètres et pour ta page de type index.php?rub=$1&srub=$2
si tu veux 1 paramètre c'est

RewriteRule ^(\w+).html$ index.php?rub=$1

tu peu faire les 2

Code : Tout sélectionner

Options +FollowSymlinks RewriteEngine on RewriteRule ^(\w+).html$ index.php?rub=$1 [L] RewriteRule ^(\w+)-(\w+).html$ index.php?rub=$1&srub=$2 [L]

sinon fraudai essayer comme ca :

Code : Tout sélectionner

RewriteRule ^(\w+)(?:-(\w+))?.html$ index.php?rub=$1&srub=$2

Eléphant du PHP | 214 Messages

08 juin 2010, 20:55

J'avance un peu, je voudrais un peu plonger au fond et faire comme ca:

rub-srub-cat
RewriteRule ^(\w+)-(\w+)-(\w+).html$ index.php?rub=$1&srub=$2&cat=$3 [L]
Mais supposons que l'un des parametres contient un (_) ou (-) ou (.) des majiscules et miniscules, par exemple: Sport-Foot-Joueurs_Selectionnes

Ce code ne marche pas:
RewriteRule ^(\w+)-(\w+)-(\w+).html$ index.php?rub=$1&srub=$2&cat=$3 [L]

ViPHP
ViPHP | 5462 Messages

08 juin 2010, 23:56

a toi après de bien formater ton adresse

Eléphant du PHP | 214 Messages

10 juin 2010, 12:48

ca marche bien, merci pour votre aide

Eléphant du PHP | 214 Messages

13 juin 2010, 14:31

J'ai rencontre un petit probleme en recuperant l'id:

le fichier htaccess:
RewriteRule ^(\w+)-(\w+)-([\w.-_]+).html$ index.php?rub=$1&srub=$2&idmcat=$3 [L]
le fichier php:
$idmcat = $_GET['idmcat'];
$rub = $_GET['rub'];
$srub = $_GET['srub'];
echo $rub.'<br>';
echo $srub.'<br>';
echo $idmcat.'<br>';
je recupere ma rub et srub alors que l'idmcat je le recupere pas, le lien est sous forme de:
echo '<a href="'.$rub.'-'.$srub.'-'.$idmcat.'.html" class="Link01">';

Eléphant du PHP | 214 Messages

15 juin 2010, 17:08

Est ce qu'il y a quelqu'un qui a une idee sur ce probleme

ViPHP
ViPHP | 5462 Messages

15 juin 2010, 17:13

Est ce qu'il y a quelqu'un qui a une idee sur ce probleme
deja ton regexp n'est pas bon
c'est

Code : Tout sélectionner

(\w+)-(\w+)-([\w\._-]+)
ensuite fais plutot un
print_r($_GET);
comme les erreurs ne s'affiche pas je conseil de vérifier les valeurs dans tond php.ini

Code : Tout sélectionner

display_errors = On error_reporting = E_ALL | E_STRICT
:wink: