Bonsoir,

J'ai suivi votre tutoriel sur l'URL Rewriting et j'aurais aimé l'utiliser sur mon projet.

Voici ma structure actuelle :

[admin]
[design]

  • [css]
  • [images]
  • [themes]
  • template.php
    [web]
  • [inscription]
    • index.php
    • new.php
  • 404.php
  • index.php
    .htaccess
    index.php

Les sources que j'ai donc pu récupérer me permettent donc d'effectuer la mise en place des pages qui se trouvent dans web... Seulement voilà, j'ai besoin de faire passer des id en $_GET de :

  • [inscription]
    • index.php
      à
    • new.php

Du j'ai tenté de faire RewriteRule ^new/([0-9]+)$ inscription/new.php?id=$1 [QSA,L] en donnant comme url dans ma page web/inscription/index.php : new/1 ou new/2

Bien entendu, cela ne fonctionne pas.

Comment puis-je réussir à effectuer ces opérations ?

Merci d'avance :)

8 réponses


Et si t'enlève le ^ ?

Innah
Auteur

Malheureusement cela ne change rien :(

Bizarre, normanement, ça devrait rediriger sans aucun problème.
Peux-tu nous montrer tout ton .htaccess plz ? (Seulement les Rewrite*)

Innah
Auteur

Biensûr, le voici :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]
RewriteRule new/([0-9]+)$ inscription/new.php?id=$1 [QSA,L]

Et voici mon index.php qui se trouve à la racine avec ce .htaccess :

<?php
define("WEBROOT","/test/");
if(!isset($_GET"p"])){ $_GET"p"]="index"; }
if(!file_exists("web/".$_GET"p"].".php")){ $_GET"p"]="404"; }
ob_start();
include "web/".$_GET"p"].".php";
$content = ob_get_contents();
ob_end_clean();
include "design/template.php";
?>

Et voici le fichier avec lequel j'essaie de faire ces fameux liens qui se trouve donc dans www/test/web/inscription/new.php

<a href="<?php echo WEBROOT; ?>inscription/new/1" class="cufon">Europe</a>
<br />
<a href="<?php echo WEBROOT; ?>inscription/new/2" class="cufon">Amérique</a>

Ha, je vois, c'est la redirection qui est trop forte.
Essaye ceci :
.htaccess :

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^new/([0-9]+)$ inscription/new.php?id=$1 [QSA,L]
RewriteRule ^([a-zA-Z0-9\/]+)$ index.php?p=$1 [QSA,L]
Innah
Auteur

Malheureusement non ça ne passe toujours pas...

Bon, pas grave. Je vais faire sans... Je reviendrai sur cette URL Rewritting quand j'aurais terminé mon site... Je perds trop de temps sur un truc stupide là...

Merci quand même pour ton aide :)

Si tu es en local n'hésite pas à voir les log apache pour avoir plus d'idée sur l'erreur :)

Essais donc ceci :

RewriteEngine on
RewriteBase /test/
RewriteRule $new/([0-9]+)^ inscription/new.php?id=$1 [QSA,L]