Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Regex] comment dire un mot ou un autre

    18 mars 2006 à 9:39:50

    Voila je suis en train de faire un site avec url rewriting et je block a un petit endroit.

    Voici déja mon code
    Options +FollowSymlinks
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} ^(.+)[-]([0-9]+)\.html$
    RewriteRule ^(.+)-([0-9]+)\.html$ $1.php?page=$2 [L]
    RewriteCond %{REQUEST_FILENAME} ^(.+)\.html$
    RewriteRule ^(.+).html$ $1.php [L]


    Explciation :
    - Si on tape index.html on est redirigé vers index.php,
    - Si on tape test.html on est redirigé vers test.php
    - Si on tape index-2.html on est redirigé vers index.php?page=2
    - Si on tape test-3.html on est redirigé vers test.php?page=3

    Mon probleme est le suivant :
    Comme vous le remarquez si il y a un tiret puis une valeur cette valeur se place dans a variable $_GET['page'] or defois je voudrai que ce ne soit plus stockez dans la variable $_GET['page'] par exemple $_GET['design'] :
    design-orange.html donne : design.php?design=orange

    Je pourait faire quelque chose comme ceci :
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} ^index[-]([0-9]+)\.html$
    RewriteRule ^(.+)-([0-9]+)\.html$ $1.php?page=$2 [L]
    RewriteCond %{REQUEST_FILENAME} ^livre_dor[-]([0-9]+)\.html$
    RewriteRule ^(.+)-([0-9]+)\.html$ $1.php?page=$2 [L]
    RewriteCond %{REQUEST_FILENAME} ^test[-]([0-9]+)\.html$
    RewriteRule ^(.+)-([0-9]+)\.html$ $1.php?page=$2 [L]
    RewriteCond %{REQUEST_FILENAME} ^design[-](.+)\.html$
    RewriteRule ^(.+)-(.+)\.html$ $1.php?design=$2 [L]
    RewriteCond %{REQUEST_FILENAME} ^(.+)\.html$
    RewriteRule ^(.+).html$ $1.php [L]


    Comme vous le voyez c'est possible mais ca me ferais un apache super lourd or de mémoire avec les regex on peut mettre des OU via '|' mais aparament j'arrive pas a les utiliser j'ai tenté ceci:

    Options +FollowSymlinks
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} ^(index|test|livre_dor)[-]([0-9]+)\.html$
    RewriteRule ^(.+)-([0-9]+)\.html$ $1.php?page=$2 [L]
    RewriteCond %{REQUEST_FILENAME} ^(design)[-](.+)\.html$
    RewriteRule ^(.+)-(.+)\.html$ $1.php?page=$2 [L]
    RewriteCond %{REQUEST_FILENAME} ^(.+)\.html$
    RewriteRule ^(.+).html$ $1.php [L]


    Mais la j'obient une erreur.

    Ce que je voudrai c'est savoir comment on fait pour utiliser un OU dans l'url rewriting

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      18 mars 2006 à 9:41:20

      Le "ou" en regex c'est |
      • Partager sur Facebook
      • Partager sur Twitter
        18 mars 2006 à 9:46:44

        Merci mais j'ai essayé (regarde mon dernier code source) et j'ai eu au final une erreur
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          18 mars 2006 à 9:53:45

          Essaye ça
          Options +FollowSymlinks
          RewriteEngine on
          RewriteCond %{REQUEST_FILENAME} ^(index|test|livre_dor)-([0-9]+)\.html?$
          RewriteRule ^(index|test|livre_dor)-([0-9]+)\.html?$ $1.php?page=$2 [L]
          RewriteCond %{REQUEST_FILENAME} ^design-(.+)\.html?$
          RewriteRule ^design-(.+)\.html?$ design.php?page=$1 [L]
          RewriteRule ^(.+).html?$ $1.php [L]


          PS: J'ai mis un ? derriere chaque l pour qu'on puisse aussi passer par .htm ;)
          • Partager sur Facebook
          • Partager sur Twitter
            18 mars 2006 à 10:03:03

            nan ca ne passe aps (pour info ca me retourne un erreur 404 (fichier no found))
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              18 mars 2006 à 10:17:26

              heu tes fichiers design.php, index.php, test.php et livre_dor.php existent bien ? et ils sont dans le même dossier que le .htaccess?
              • Partager sur Facebook
              • Partager sur Twitter
                18 mars 2006 à 10:23:34

                vi vi lol t'inkeite pas pour ca

                si je fait :

                Options +FollowSymlinks
                RewriteEngine on
                RewriteCond %{REQUEST_FILENAME} ^(.+)[-]([0-9]+)\.html$
                RewriteRule ^(.+)-([0-9]+)\.html$ $1.php?page=$2 [L]
                RewriteCond %{REQUEST_FILENAME} ^(.+)\.html$
                RewriteRule ^(.+).html$ $1.php [L]


                ca passe mais bon moi je veut pas que ce soit tjrs stocker dans $_GET['page'] mais avec ce code ca passe parfaitement

                sinon j'ai penser a un coder de genre (il ne marche pas mais c'ets pour l'idée)

                Options +FollowSymlinks
                RewriteEngine on
                RewriteCond %{REQUEST_FILENAME} ^(index|livre_dor|test)
                RewriteCond %{REQUEST_FILENAME} ^(.+)[-]([0-9]+)\.html$
                RewriteRule ^(.+)-([0-9]+)\.html$ $1.php?page=$2 [L]
                RewriteCond %{REQUEST_FILENAME} ^(.+)\.html$
                RewriteRule ^(.+).html$ $1.php [L]


                normalement les 2 condition doivente etre verifier pour que el rewrite rule ce mette en palce or ca plante et l'eereur vien de cette ligne

                RewriteCond %{REQUEST_FILENAME} ^(index|livre_dor|test)

                car sans le code passe
                • Partager sur Facebook
                • Partager sur Twitter

                [Regex] comment dire un mot ou un autre

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown