Php urlencode et Apache RewriteRule = 403 Forbidden

Discussion dans 'URL Rewriting et .htaccess' créé par jst, 23 Avril 2012.

  1. jst
    jst Nouveau WRInaute
    Inscrit:
    25 Novembre 2011
    Messages:
    29
    J'aime reçus:
    0
    Bonjour,

    Je n'arrive pas à encoder mes accents pour les passer dans les URLs.

    Je récapitule mon pb du moment:

    Je développe un site allemand, donc avec plein de umlauts (ü, ö, ä, ÿ).
    Je fais tourner ça sous un M.V.C PHP simple (voilà le contrôleur frontal):

    $module = dirname(__FILE__).'/modules/'.htmlspecialchars($_GET['module'].'/');
    //
    $action = (isset($_GET['action'])) ? htmlspecialchars($_GET['action']).'.php' : 'index.php';
    //
    if(file_exists($module.$action)){
    include($module.$action);
    }else{
    //echo $module.$action.'.php not found'."<br />";
    include('global/home.php');
    }

    J'ai mis en place un menu dynamique qui va chercher certains fichiers pour en afficher le nom dans les sous-menus (avec plein de ä ou de ö).

    J'ai mis en place une réécriture d'URL:

    RewriteRule ^admin-([a-z_]+)-([a-zA-Z0-9\._]+)\.html index.php?module=admin&action=$1&section=$2 [L]

    Si je laisse mes accents (ä, ö, ü...) Apache ne comprend rien, et si je tente d'encoder mon paramètre avec urlencode(), Apache m'affiche un gros 403...

    Quelqu'un de méga charitable pour m'aider ?
    Merci d'avance
    Sébastien
     
  2. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 361
    J'aime reçus:
    2
    Déjà pour un site allemand, je te conseillerais de faire à l'allemande, c'est à dire de transformer une fois pour toute les caractères accentués en leur équivalent typpographique sans umlauts :
    ö -> oe
    ü -> ue
    ä -> ae
    ÿ... t'es sûr ? A ma connaissance, en allemand, ça n'existe pas.

    L'avantage est d'avoir des urls propres dans les caractères bizarres. Switcher de l'un à l'autre est un réflexe, et tu remarqueras que Google gère assez bien les équivalences.

    Deuxièmement, il me semble que tu devrais dans la conception de ton appli différencier le nom du fichier de son affichage dans le menu

    Troisièmement, la conversion en caractères lisibles pour les browsers, ce n'est pas htmlentities mais urlencode.
     
  3. JanoLapin
    JanoLapin WRInaute accro
    Inscrit:
    21 Septembre 2008
    Messages:
    4 250
    J'aime reçus:
    0
    Peux-tu détailler, STP, Marie-Aude... j'ai peur de ne pas comprendre
     
  4. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 361
    J'aime reçus:
    2
    HTML entities va donner des &acutre; &amp; qui ne sont pas les caractères qui sont utilisées dans les urls pour remplacer les caractères spéciaux

     
  5. jst
    jst Nouveau WRInaute
    Inscrit:
    25 Novembre 2011
    Messages:
    29
    J'aime reçus:
    0
    C'est bien urlencode() que j'utilise oui.

    Pour ce qui est de ae ou oe, je profite du fait que tu semble avoir un peu d'expérience :) : Il vaut mieux les utiliser directement plutôt que de chercher à utiliser &oelig; etc... n'est-ce pas ?

    AU fait, bien que ne parlant pas allemand moi même et n'en ayant pas rencontré, &yuml existe bien oui.

    Bon pour autant, je ne sais toujours pas pourquoi Apache me renvoie un 403 dès que je tente d'encoder mes paramètres d'url...?

    EN plus La question que je me pose (je sais que ça déborde un peu du cadre), comment afficher mes menus dynamiques avec mes umlauts si je vire mes accents de mes fichiers et répertoires ? Obligé de passer par un tableau de correspondances ?
    Merci pour ces réponses
     
  6. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 361
    J'aime reçus:
    2
    Je ne vois pas d'urlencode() dans le code que tu as mis ?

    tu utilises ö (en utf8) ou son équivalent en html entitities dans le texte, et oe dans les urls

    ÿ existe en général. A ma connaissance pas en allemand, ou alors pour des noms propres étrangers. En revanche, ça existe en français ^^ ( D'ailleurs ce n'est même pas mentionné ici http://de.wiktionary.org/wiki/Wiktionary:Hauptseite )

    Oui tu fonctionnes avec une table de correspondance.
     
  7. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 117
    J'aime reçus:
    315
Chargement...
Similar Threads - Php urlencode Apache Forum Date
URL canonique et problème entre / et /index.php Débuter en référencement 20 Janvier 2021
refaire mon site html en PHP et garder un bon référencement Problèmes de référencement spécifiques à vos sites 17 Décembre 2020
[PHPWhois.fr] Vérifiez la disponibilité d'un nom de domaine Demandes d'avis et de conseils sur vos sites 10 Décembre 2020
Du php dans du javascript Développement d'un site Web ou d'une appli mobile 16 Novembre 2020
réécrire /categorie.php?id=xxx en /categorie/id URL Rewriting et .htaccess 13 Septembre 2020
Rediriger Index.php vers racine URL Rewriting et .htaccess 15 Août 2020
Galère pour supprimer index.php URL Rewriting et .htaccess 12 Août 2020
PHP Redis : Comment indexer les clés ? Développement d'un site Web ou d'une appli mobile 1 Août 2020
PHP session perso : session_start() en erreur. Développement d'un site Web ou d'une appli mobile 27 Juillet 2020
Quelle doc sur PHPRedis ? Développement d'un site Web ou d'une appli mobile 24 Juillet 2020