Sujet : Règles de réécriture & duplicate-content

Bonsoir,

Je me pose une question à laquelle je ne trouve pas de solutions évidentes... hmm
Actuellement dans mon application, mes règles de routage me permettent d'accéder par exemple pour le module Index et l'action Index à la page via par exemple

  • /Index/Index.html

  • /Index/

  • /Index.html

  • /

  • /InDex/In-deX.html

  • etc...

Vous conviendrez que niveau référencement et duplicates content, c'est pas top, et je veux en plus éviter les urls pas très chouettes à base de majuscules minuscules etc...

Donc je souhaite être en mesure soit d'insérer un <link rel="canonical" href="" /> soir de faire une redirection 301 (préférence pour cette dernière).

Mais je me demande où placer le code qui fera ces vérifications?

J'ai penser à surcharger les méthodes de mes classes avec la méthode magique __call() afin de faire un test en amont avant d'entrer dans le vif du sujet, mais ça risque d'être laborieux...

Essayer d'étendre Hoa_Controller_Front, afin de surcharger la méthode dispatch() ?

J'avoue être un peu dans les choux, un petit coup de pouce au démarrage serait bienvenue wink

merci d'avance!

2

Re : Règles de réécriture & duplicate-content

Hey smile,

Euh, comme les règles de routages fonctionnent aussi avec le zFormat, pas de problème de casse, si ?
Et pour résoudre ton problème d'index, créé une règle vide avec des module et actions par défaut, non ?
Édition : mais pourquoi ta règle par défaut ne comprend pas la règle vide d'ailleurs ?

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Re : Règles de réécriture & duplicate-content

Oups, je sais pas si j'ai réussit à me faire comprendre hmm

En fait je veux conserver l'accessibilité de mes pages quelque soit la casse ( action.html ou aCtiOn.html doit fonctionner), mais pour des problèmes de référencement, je souhaite rediriger sur une url canonicale...

Donc en gros je voudrais avoir un premier "début" de dispatch, qui est capable de me dire quel module et quel action est appelée, et juste à ce moment là, vérifier si oui ou non on est en url canonicale et si non, et bien effectuer une action (redirection, construction d'une méta...)

C'est plus compréhensible?

4

Re : Règles de réécriture & duplicate-content

Hmm, sauf que la casse est « cassée » dans les routeurs. Elle ne compte pas car passée dans le zFormat. Il faudrait voir pour écrire des règles très larges avec le zFormat (sans option, sans formattage) et voir ce qu'il se passe.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Re : Règles de réécriture & duplicate-content

Je crois que j'ai pas tout saisi... hmm
Qu'est-ce que tu entends par des règles très larges?
Pour l'instant, j'ai ceci:

        'controller.class' => '(:controller:ls/-//U:)Controller',
        'controller.file' => '(:controller:ls/-//U:).php',
        'controller.directory' => 'hoa://Application/Controller/',
            
        'action.class' => '(:action:ls/-//U:)Controller',
        'action.method' => '(:action:ls/-//U:)Action',
        'action.file' => '(:action:ls/-//U:).php',
        'view.action' => '(:controller:ls/-//U:)/(:action:ls/-//U:).phtml' ,

C'est pas déjà large ?

6

Re : Règles de réécriture & duplicate-content

Hmm, après réflexion, on ne peut pas faire de redirections. Donc c'est foutu pour ton problème de casse (pour l'instant hein smile).
Sauf que là, avec le zFormat, tu mets en minuscule puis la première en majuscule. Peut-être que si tu ne faisais pas ça, PHP ne trouverait pas les classes et méthodes, et on aura une erreur. Sauf que PHP n'est pas sensible à la casse, donc ça va être compliqué …

Hmm, je ne vois pas de solutions simples. Tu as regardé chez les autres frameworks ?

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Re : Règles de réécriture & duplicate-content

Yep,
J'ai pas vraiment regardé sur d'autres framework (et peut-être que je suis le seul à me casser à la tête à vouloir de la flexibilité utilisateurs, mais un référencement correct?).

Sur le principe je verrais ça comme ça:

Lorsque dans le controleur frontal on arrive au point d'avoir l'action et le module de définit,
On regarde dans un fichier de configuration quelconque si les variables $_SERVER correspondent à  ce qui est définit, si non on fait une action.

Mais je n'arrive pas à trouver dans la classe Hoa_Controller_Front à quelle moment on retrouve les infos sur l'action et le module?

8

Re : Règles de réécriture & duplicate-content

Le traitement se passe dans les routeurs (regarde autour des data arrays).

Il se passe quelque chose de très important dans ma vie, je ne serai pas disponible avant vendredi. Désolé, je n'ai pas le choix.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Re : Règles de réécriture & duplicate-content

Pas de problèmes wink

10

Re : Règles de réécriture & duplicate-content

Dans les dernières versions de Hoa (trunk), le routage est partiellement sensible à la casse.
Ainsi, si tu écris la règle /(:module)/(:action).html et que tu veux accéder à /foo/BaR.html, il va chercher l'action BaRAction (par défaut), et ce ne sera pas toléré car seulement BarAction existe (dans notre exemple fictif smile).
En revanche, ça n'est pas encore sensible à la casse pour les classes, donc /FoO/bar.html fonctionnera.

Je peux le faire, mais ça ajoutera du temps de calcul. Faut que je regarde comment optimiser ça (faut que je lise les sources PHP pour ça, pour comparer mes diverses techniques, ça peut prendre quelques jours).

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »