Fork me on GitHub

Réécriture d'URL [URL Rewriting sous XOOPS]

200610
Décembre
  Ash Programmation, Hack, ... 23204
Programmation, Hack, ...

Ce sujet ne vante absolument pas les mérites de l'URL rewriting, de nombreux sites sont très bien référencés sans URL rewriting, on le sait. L'URL rewriting favorise le référencement mais ça ne suffit pas, il faut du contenu, on le sait. Donc, pas besoin de débattre sur l'utilité ou pas de ce type de technique.

Je fais l'impasse pour les termes et insultes techniques, si vous souhaitez plus d'informations sur les expressions régulières, installation serveur et autre, direction : :google:

J'ai décidé de mettre sur papier toutes les infos sur ce thème, afin de les retrouver si ma mémoire devait se percer un jour, en même temps, j'en fais profiter les autres.



Tous les exemples sont réalisés avec le forum newbb (cbb) valable jusqu'à la version 1.16. De toute façon, ces méthodes sont les mêmes pour tous les modules, du moins leurs principes.

Une autre technique alternative et plus douce est expliquée ici

Mais pour les psychopathes endurcis c'est par ici que ça commence :

1. Première méthode, le hack

Pour l'URL rewriting j'utilise le très vieux hack de kenogui :

https://www.frxoops.org/modules/news/article.php?storyid=602
http://kenogui.free.fr/XoopsModRewrite-1.0.zip <== Vous obtiendrez des explications dans le fichier readme ainsi que les fichiers indispensables pour la première méthode.

Le principe de ce hack est vraiment super, il consiste à réécrire les URL de façon dynamique et à la volée. De plus, vous pouvez personnaliser vos règles de réécriture, exemple : mon-url-c-est-la-plus-belle-mais-avec-50-mots-cles-elle-nest-pas-tres-pertinente.coca ou un simple t45-28-2555.html et encore, ce que vous voulez !

Avantage, il évite de modifier les fichiers php des modules. Problème, les règles de ce hack sont très vielles et des modules n'existent même plus, il faut donc tout retravailler.

Dans un premier temps il faut lire le fichier readme.txt et ajouter les morceaux de codes proposés. Faites une traduction des commentaires avec google, si vous avez des problèmes avec l'anglais. Si vous avez des problèmes avec le fichier header.php vous avez une réponse ici : header.php <== Réponse

Ensuite tout se joue avec les fichiers ModRegExp.php et .htaccess

Pour simplifier au maximum

Le fichier ModRegExp.php, niveau script php, sert à dire : cette URL doit ce transformer en cette URL

Le fichier .htaccess, niveau serveur, sert à appliquer la règle de réécriture et la rendre compréhensible pour le serveur, blablabla, passe détails

Pour commencer, il faut s'occuper des URL accessibles à la racine (en page d'accueil), donc, un fichier ModRegExp.php sera placé à la racine.

A savoir que je ne place pas les extensions .html ou .php je préfère les virer car inutiles. En plus, on peut mettre ce que l'on veut comme extensions. Si vous souhaitez les rajouter il faut juste placer .html ou .cocacola à la fin des URL que l'on souhaite obtenir.

Dans ModRegExp.php il y a deux zones

La première : urlin où il faut placer les URL non-réécrites :

Dans cet exemple, on va réécrire deux URL différentes :

function replace_for_mod_rewrite(&$s)
{
        
//each urlin need a line in urlout
        
$urlin = array(

"'(?<!//)modules/newbb/viewtopic.php?topic_id=([0-9]*)&forum=([0-9]*)'",
"'(?<!//)modules/newbb/viewforum.php?forum=([0-9]*)'",

);

([0-9]*) = le résultat de la variable topic_id et forum (dans la première ligne)
([0-9]*) = le résultat de la variable forum (dans la seconde ligne)

Il faut s'inspirer des syntaxes déjà présentes dans le fichier ModRegExp.php (Les lignes inutiles (modules non-installés) doivent être supprimées)

Comme dans cet exemple le résultat ne peut être que des chiffres, alors ([0-9]*) suffit. Mais certaines variables donnent des valeurs composées de chiffres et de lettres (Minuscules et majuscules pour faire bien ch**r) Dans ce cas on place ([0-9,a-z,A-Z]*)

D'autres encore sont plus chi**tes et donnent des résultats avec les caractères - et _ dans ce cas on place ([0-9,a-z,A-Z,_-]*) etc... Par principe, il faut éviter de placer des trucs du genre (N'importe quels caractères sont pris en compte) On évite donc des trucs tels que ([^-]*) ou (.*) qui acceptent tout sauf tiret ou tout. Enfin, ce n'est que mon avis.

La seconde zone : urlout où il faut placer les URL que l'on souhaite obtenir :

par exemple :

$urlout = array(
"modules/newbb/topic-\1-forum-\2",
"modules/newbb/forum_blabla-\1",
);
        
$s preg_replace($urlin$urlout$s);
        return 
$s;
}


\\1 = variable 1 \\2 = variable 2 ,etc...

topic-\\1- = La variable topic_id=([0-9]*) réécrite. Les tirets avant et après le \\1 >> - << sont les séparateurs.


Les éléments de la zone urlin et urlout doivent être placés dans l'odre, donc :

"'(?<!//)modules/newbb/viewtopic.php?topic_id=([0-9]*)&forum=([0-9]*)'",


doit concorder avec :

"modules/newbb/topic-\1-forum-\2",


Ce qui veut dire que :

"'(?<!//)modules/newbb/viewtopic.php?topic_id=([0-9]*)&forum=([0-9]*)'",


est premier dans urlin et que :

"modules/newbb/topic-\1-forum-\2",


doit être premier dans urlout, ainsi de suite.

La moindre erreur, virgule, slash en moins, etc, peut faire planter le site. En principe, c'est une page blanche que vous avez quand il y a une erreur dans une règle de réécriture. De toute façon, cela n'est pas un problème puisque vous travaillez sur un site de test et non celui en production, enfin, j'espère!!

Vérification de l'application des règles

On clique sur un des sujets du forum ou sur une catégorie qui se trouvent dans un bloc en page d'accueil et si les adresses sont bien de type :

http://www.example.com/modules/newbb/topic-724-forum-16

et

http://www.example.com/modules/newbb/forum_blabla-11

c'est gagné ! Pour la réécriture coté php uniquement. Car l'adresse renvoie une page 404. Ce qui est excellent. En effet, l'url est réécrite. Il ne reste plus qu'à passer à la suite.

Maintenant, il faut que le serveur apache puisse comprendre cette URL afin de servir la page, c'est le rôle du fichier .htaccess.

Toujours à la racine, puisque l'on souhaite réécrire dans un premier temps les URL da la page d'accueil, on crée un fichier .htaccess :

C'est très simple, voici le contenu de notre fichier .htaccess :

(Attention : Les règles de réécriture d'URL peuvent cohabiter avec les options de configuration déjà mis en place. Si un fichier .htaccess est déjà présent, il suffit juste de l'éditer et d'ajouter les règles suivantes)

Options +FollowSymlinks
RewriteEngine On

RewriteRule 
^modules/newbb/topic-([0-9]+)-forum-([0-9]+)$ modules/newbb/viewtopic.php?topic_id=$1&forum=$2   [L]
RewriteRule ^modules/newbb/forum_blabla-([0-9]+)$ modules/newbb/viewforum.php?forum=$[L]


En langage humain ça veut dire :

L'adresse : modules/newbb/viewtopic.php?topic_id égale variable 1 / forum égale variable 2 /

sera réécrite ainsi : modules/newbb/topic-([0-9]+)-forum-([0-9]+)

Si la première partie avec le fichier ModRegExp.php est un succès et que le serveur apache autorise la réécriture d'URL, soit ça fonctionne et dans ce cas bravo, soit il affiche une erreur 404 et là toujours bravo.

Si une page 404 s'affiche, il faut revoir tranquillement les règles de réécriture du fichier .htaccess, il y a forcément une erreur de frappe, syntaxe.

En revanche si une erreur code 500 s'affiche, là c'est un peu plus chiant, le serveur n'est sûrement pas configuré pour la réécriture d'URL ou une grosse erreur est présente dans le fichier .htaccess. Dans ce cas 2 solutions, vous essayez de corriger et si ça ne fonctionne toujours pas alors direction "son hébergeur" si on est en mutualisé pour obtenir des renseignements ou en cuisine si on a un serveur dédié pour configurer le tout :

Une petite solution (ultra douce) :

http://www.webrankinfo.com/forums/viewtopic_4291.htm

Si elle ne fonctionne pas, alors rendez-vous à la fin de ce document (Chapitre 4] ) pour les sites sur serveur dédié. Une partie peut également intéresser les sites sur hébergement mutualisé Voir (phpinfo)

Maintenant que les URL sont réécrites en page d'accueil, il faut passer aux URL profondes.

En effet, j'ai traité les URL en page d'accueil uniquement, donc quand je clique sur un lien l'URL est bien réécrite et le sujet est accessible, mais ça ne fonctionnera que dans le sens page d'accueil vers le modules/newbb. Une fois arrivé sur ce module, plus aucune règle ne fonctionnera. Il faut juste créer un fichier ModRegExp.php et créer un fichier .htaccess à la racine de modules/newbb :



La seule différence sera que les liens seront relatifs à ce dossier, donc écrits ainsi :

Les lignes :

RewriteRule ^topic-([0-9]+)-forum-([0-9]+)$ viewtopic.php?topic_id=$1&forum=$2   [L]
RewriteRule ^forum_blabla-([0-9]+)$ viewforum.php?forum=$[L]


remplaceront pour le fichier .htaccess les lignes :

RewriteRule ^modules/newbb/topic-([0-9]+)-forum-([0-9]+)$ modules/newbb/viewtopic.php?topic_id=$1&forum=$2   [L]
RewriteRule ^modules/newbb/forum_blabla-([0-9]+)$ modules/newbb/viewforum.php?forum=$[L]


Et dans les zones urlin et urlout du fichier ModRegExp.php, les lignes :

"'(?<!//)viewtopic.php?topic_id=([0-9]*)&forum=([0-9]*)'",
"'(?<!//)viewforum.php?forum=([0-9]*)'",

"topic-\1-forum-\2",
"forum_blabla-\1",


remplaceront les lignes :

"'(?<!//)modules/newbb/viewtopic.php?topic_id=([0-9]*)&forum=([0-9]*)'",
"'(?<!//)modules/newbb/viewforum.php?forum=([0-9]*)'",

"modules/newbb/topic-\1-forum-\2",
"modules/newbb/forum_blabla-\1",


Bonus : Remplacer modules/newbb par cequejeveux/

Il faut déjà être à l'aise avec le hack kenogui, avoir compris 2 ou 3 trucs, mais c'est pas sorcier.

L'astuce c'est de placer une règle de réécriture dans le fichier ModRegExp.php à la racine / :

//Dans la zone urlin
//Ajoutez
"'(?<!//)modules/newbb/"'",
//Pour le reste normalement si vous avez bien suivi le début 
//vous n'
avez aucun changement à faire ici.
"'(?<!//)modules/newbb/viewtopic.php?topic_id=([0-9]*)&forum=([0-9]*)'",
"'(?<!//)modules/newbb/viewforum.php?forum=([0-9]*)'",

//Dans la zone urlout
//Ajoutez
"cequejeveux"",
//Et il faut remplacer les anciennes lignes par celles-ci
"
cequejeveux/topic-\1-forum-\2",
"
cequejeveux/forum_blabla-\1",


On fait la même chose dans le fichier ModRegExp.php à la racine de /modules/newbb/ :

//Dans la zone urlin
//Ajoutez
"'(?<!//)newbb/"'",
"'
(?<!//)index.php"'",
"'(?<!//)index.php''",
//Normalement si vous avez bien suivi le début 
//vous n'avez aucun changement à faire ici.
"'(?<!//)viewtopic.php?topic_id=([0-9]*)&forum=([0-9]*)'",
"'(?<!//)viewforum.php?forum=([0-9]*)'",

//Dans la zone urlout
//Ajoutez
"../../cequejeveux/"",
"
../../cequejeveux/"",
"../../cequejeveux/'",
//Et il faut remplacer les anciennes lignes par celles-ci
"../../cequejeveux/topic-\1-forum-\2",
"../../cequejeveux/forum_blabla-\1",


On teste et on passe ensuite au fichier .htaccess :

En fait, on va créer un dossier virtuel qui ne doit absolument pas exister physiquement ^^ ! Alors ne pas le créer. Et comme d'habitude, c'est le fichier .htaccess qui va se charger de cuisiner tout ça :

Donc à la racine de notre site / on ajoute dans le fichier .htaccess ceci

RewriteRule ^cequejeveux$  modules/newbb/  [L]
RewriteRule ^cequejeveux/(.*)-(.*)$  modules/newbb/$1-$2  [L]
RewriteRule ^cequejeveux/(.*)$  modules/newbb/$1  [L]


On teste et on obtient ces URL :

www.example.com/cequejeveux/
www.example.com/cequejeveux/topic-2-forum-3
www.example.com/cequejeveux/forum_blabla-3

Si vous obtenez des erreurs 404 mais que les URL sont bien de ce type c'est déjà très bien, il faut juste relire votre fichier .htaccess pour chasser les erreurs de frappe ^^

Oui, j'avais écris que (.*) ou autre truc du genre ne devaient pas être utilisés par principe, car si on a besoin de chiffres uniquement, pourquoi tout accepter ? Sauf qu'ici, nous avons déjà fait une bonne partie du boulot, les URL sont déjà traitées si vous avez bien suivi tout le début de la première méthode. Il n'y a donc aucun problème, seuls les caractères déjà autorisés dans votre fichier modules/newbb/.htaccess seront utilisés, les autres seront interdits. Notez que le fichier modules/newbb/.htaccess ne sera pas modifié pour cet exercice. Il a déjà été mis au point en début de partie de la première méthode. Vous devez modifier uniquement celui de la racine de votre site.



2. Seconde méthode : Modification des fichiers php et templates

Tout fonctionne, le hack de kenogui est opérationnel et vous avez déjà créé plusieurs règles de réécriture d'URL. Malheureusement, ce n'est pas très souple et une réécriture totale de votre site est impossible. Ou bien, vous souhaitez des trucs un peu plus exotiques du genre, réécrire les URL des profils et ajouter le nom, etc... Il y a donc une autre solution qui consiste à modifier les URL directement dans les fichiers php ou templates.

Attention ! Modifier les sources de xoops rend très difficile les mises à jour par la suite. Il faut les faire à la main comme avec du phpbb sauf que pour l'instant il n'existe pas de document pour faire les mises à jour pas à pas chez xoops (Pas à ma connaissance). Si vous faites une mise à jour en automatique de xoops, vos fichiers seront donc écrasés et vos modifications perdues. Vous êtes prévenus.

Je prends toujours comme exemple le module newbb (cbb) :

C'est encore plus simple que le hack de kenogui, cependant ce dernier avait le mérite d'éviter de modifier les fichiers php des modules.

Il faut juste chercher les lignes qui commencent par href dans les fichiers php :

Exemple viewtopic.php :

Je fais une recherche de href ou viewtopic.php? :

je tombe sur :

$xoopsTpl->assign(array('topic_title' => '<a href="'.$bbUrl['root'].'viewtopic.php?viewmode='.$viewmode.'&topic_id='$topic_id.'&forum='.$forum.'">'.$forumdata['topic_title'].'</a>',


Cette version me donne :

http://www.bulma-animation.org/module ... lat&topic_id=730&forum=67

Je désire ce type d'URL :

http://www.bulma-animation.org/modules/newbb/viewf-flat-730-67

Je vais donc modifier cette ligne ainsi :

$xoopsTpl->assign(array('topic_title' => '<a href="'.$bbUrl['root'].'viewf-'.$viewmode.'-'.$topic_id.'-'.$forum.'">'.$forumdata['topic_title'].'</a>',


viewf et son tiret le séparateur >> - << (viewf-) remplacent viewtopic.php?viewmode= (J'ai mis viewf- mais vous pouvez mettre cocacola- si ça vous chante :) Cependant il faut qu'il y est la même chose dans votre .htaccess qui va venir)

Le 2 ème tiret remplace &topic_id= (Pareil j'ai mis un tiret, mais je peux mettre -cocacola- (Mais il faut toujours qu'il y ait une séparation, donc pas de cocacola sans un tiret avant et un tiret après)

Le 3 ème tiret remplace &forum= (idem)

J'enregistre les modifications et je teste l'URL sur la page :

http://www.bulma-animation.org/module ... php?topic_id=730&forum=67

Dans cet exemple on a modifié le lien qui se trouve 2 niveaux en dessous de index des forums (Attention, dans cet exemple d'adresse vous obtiendrez une version différente sur Bulma Animation). J'ai fait exprès de choisir celui-ci car en plus de chiffres on a également des lettres dans cette URL "viewf-flat-730-67"

flat = la valeur de la variable viewmode= que nous avons transformé en viewf-

Cliquez et si vous obtenez http://www.bulma-animation.org/modules/newbb/viewf-flat-730-67 avec une belle erreur 404 c'est parfait !

Pour qu'Apache puisse la servir il faut donc créer une règle dans un fichier .htaccess déjà présent ou créer ce fichier pour l'occasion et qui servira pour tout le dossier modules/newbb (y a du boulot) Dans notre exemple, le fichier .htaccess doit se trouver dans le dossier modules/newbb soit modules/newbb/.htaccess

Il doit contenir ces lignes :

Options +FollowSymlinks
RewriteEngine On

RewriteRule 
^viewf-([a-z]+)-([0-9]+)-([0-9]+)$ viewtopic.php?viewmode=$1&topic_id=$2&forum=$[L]


viewf-([a-z]+) ==> ([a-z]+) car la valeur ne contiendra que des lettres minuscules de a à z, donc pas besoin de faire compliquer. Elle correspond à la variable numéro 1 ($1) soit l'ensemble viewtopic.php?viewmode=$1 (Dans le cas où vous avez besoin de réécrire une URL avec une variable qui contient des chiffres et des lettres minuscules et majuscules, il faut donc placer ([a-z,A-Z,0-9]+)

-([0-9]+)- ==> -([0-9]+)- car la valeur ne contiendra que des chiffres de 0 à 9. Les tirets avant et après sont les séparateurs. Elle correspond à la variable numéro 2 ($2) soit l'ensemble topic_id=$2

Etc...

viewf-([a-z]+)-([0-9]+)-([0-9]+) sont séparés par des tirets >> - <<.

viewtopic.php?viewmode=$1&topic_id=$2&forum=$3 sont séparés par des esperluettes >> & <<

Toujours dans l'ordre viewf-([a-z]+)-([0-9]+)-([0-9]+) | $1 $2 $3

Notre exemple comporte une URL à trois variable, mais le principe est identique avec 5/6/7 variables, etc...

Vous avez compris le système avec les scripts php ? Vous avez aussi la solution (parfois) de modifier les templates. Oui encore de la souffrance en vue :

Exemple :

Une ligne de ce genre dans le templates newbb_block_new.html :

<a href="<{$xoops_url}>/modules/newbb/viewtopic.php?topic_id=<{$topic.id}>&forum=<{$topic.forum_id}>">


Peut être réécrite ainsi :

<a href="<{$xoops_url}>/modules/newbb/sujet-<{$topic.id}>-forum-<{$topic.forum_id}>">


Ensuite il faut créer la règle dans un fichier .htaccess. Dans ce cas, il s'agit d'un bloc que j'ai placé en page d'accueil.

Je dois donc éditer le fichier .htaccess situé à la racine :

Options +FollowSymlinks
RewriteEngine On

#newbb
RewriteRule ^modules/newbb/sujet-([0-9]+)-forum-([0-9]+)$ modules/newbb/viewtopic.php?topic_id=$1&forum=$2   [L]


C'est enfin terminé, a vous de mettre en place vos propres règles de réécriture d'URL afin d'éviter des trucs du genre :
http://www.bulma-animation.org/module ... since=1000&sortorder=DESC

Ça prend du temps, il existe des méthodes automatiques pour la réécriture d'URL, mais moins souples, a vous de choisir.

Conclusion, l'URL rewriting c'est pas magique et automatique. Un .htaccess bien remplit ne suffit pas pour réécrire de façon dynamique les URL. Il faut soit utiliser des hacks pour rendre la tâche automatique ou bien bricoler dans le code source des fichiers xoops. La seconde méthode est utilisable sur n'importe quel site php.

Bon courage


3. Evitez le "Duplicate content" ou "Pages similaires"

Indispensable pour un URL rewriting avancé : Le fichier robots.txt est à prendre en compte très sérieusement pour faire copain-copain avec les bons moteurs de recherche

Exemple, je souhaite interdire l'accès de ces URL aux moteurs parce que :
http://www.bulma-animation.org/module ... bb/viewf-flat-DESC-363-29

et inutile car c'est un doublon de la page :
http://www.bulma-animation.org/module ... b/page-363-29-flat-DESC-0

qui est inutile aussi car c'est un doublon de la page :
http://www.bulma-animation.org/module ... tion-363-5285-0-flat-0-29

Pareil pour cette page :
http://www.bulma-animation.org/module ... php?topic_id=363&forum=29

qui est inutile car c'est un doublon de :
http://www.bulma-animation.org/modules/newbb/viewf-flat-363-29

Etc.... Ça vous fait rire hein ? Ben pas les moteurs. C'est le meilleur moyen de les énerver car trop de pages identiques.

Alors la seule et unique version de page à faire manger aux moteurs c'est : http://www.bulma-animation.org/modules/newbb/topic-363-forum-29 / Bien sûr, on peut très bien supprimer ces liens doublons, mais il faut penser aux utilisateurs aussi. Certaines de ces URL sont très pratiques, notamment : viewf-flat-ASC-719-58 et viewf-flat-DESC-719-58 qui permettent à l'utilisateur de choisir l'ordre des messages en un clique (Plus récent, moins récent). Il faut alors faire deux types de tri : pour les moteurs et utilisateurs et pour les utilisateurs uniquement. Remarquez que je place des préfixes différents à ces URL pour mieux gérer le tri. Je souhaite interdire les liens de sélection uniquement et non les liens officiels. Le début du nom doit être différent d'où le préfixe viewf pour ne pas exclure topic. Si leur nom commençait de la même façon, le tri serait impossible.

Je vais donc ajouter des interdictions dans mon fichier robots.txt. Les 5 dernières lignes signalent aux moteurs que toutes les pages qui commencent par viewf, contribution, page, viewforum, viewtopic doivent être ignorées !

User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /cache/
Disallow: /class/
Disallow: /images/
Disallow: /include/
Disallow: /install/
Disallow: /kernel/
Disallow: /language/
Disallow: /templates_c/
Disallow: /themes/
Disallow: /uploads/
Disallow: /modules/newbb/viewf
Disallow
: /modules/newbb/contribution
Disallow
: /modules/newbb/viewforum.php
Disallow
: /modules/newbb/page
Disallow
: /modules/newbb/viewtopic.php


4. Quelques infos supplémentaires

Très important : Ne travaillez jamais sur un site en production et sauvegardez toujours vos fichiers avant de faire une modification, même minime soit-elle !

N'hésitez pas à commenter votre travail : Vous pouvez mettre des commentaires ou désactivez des lignes à problèmes dans les fichiers php ou .htaccess Si une ligne cause problème, pas besoin de désactiver le fichier entier. En plus commenter un fichier peut rendre son organisation plus claire.

Pour les fichiers .htaccess toutes les lignes qui commencent par # sont ignorées. Pour les fichiers php toutes les lignes qui commencent par // sont ignorées.

Exemple de commentaires et de lignes dans un fichier php :

//Réécritures URL forum

//Ces lignes ne seront pas pris en compte par le système,
//mais vous permettront d'avoir une information quand vous éditerez le fichier
//la prochaine fois.
//$xoopsTpl->assign(array('topic_title' => ''.$forumdata['topic_title'].'',
// <== Désactive cette ligne foireuse...

Liens Bonus :

Si mon article vous donne envie de stopper à la première ligne, je ne suis pas jaloux :

http://www.webrankinfo.com/analyses/autres/url-rewriting.php
http://www.illiweb.com/manuel/Apache_1.3_VF/mod/mod_rewrite.html
https://www.frxoops.org/modules/news/a ... id=971&keywords=rewriting

Savoir si rewrite est présent sur son serveur :

Hébergement Mutualisé ou Serveur Dédié (Méthode douce) :

Créez un fichier à la racine de votre site (par exemple) totalinfo.php ou ce que vous voulez.php et ajoutez ceci :

<?phpinfo()?>

Important: Quand vous n'avez plus besoin de ce fichier, supprimez le ! ou protégez le par mot de passe.

Ensuite lancez cette page en tapant son adresse http://example.com/totalinfo.php

Recherchez la zone Apache et précisément Loaded Modules : Vous trouvez mod_rewrite, ouf, c'est bon. Dans le cas contraire passez à la méthode un peu moins douce pour les serveurs dédiés uniquement, pour les autres, contacter votre hébergeur :

Si on a un serveur dédié avec Debian GNU/linux il faut activer le mod rewrite :

dpkg-reconfigure apache

A la page des mods il faut cocher mod_rewrite

Vous avez maintenant Apache avec le mod_rewrite. Vérifiez le avec le fichier http://example.com/totalinfo.php

Si vous avez une autre distribution alors cherchez sur google : rewrite apache xoops ou bien passez à la méthode dure qui consiste à chercher si apache à de quoi activer ce pu@"!n de mod_rewrite avant de passer à une recompilation du serveur http. C'est pas difficile, mais vaut mieux faire quelques recherches avant de se lancer avec la trinité .configure make make install :

Vous pouvez lancer une recherche avec cette commande, si vous ne trouvez pas le fichier modules.conf qui peut avoir un emplacement ou un nom différents en fonction des systèmes (Valable pour toutes les distributions, normalement) :

bulma2:~# find /etc . -type f -print | xargs grep LoadModule

Dés que vous avez le résultat appuyez sur control + c (ctrl c) pour arrêter la recherche.

Ok si il répond des trucs du genre (on a donc trouvé son emplacement : /etc/apache/modules.conf) :

/etc/apache/modules.conf:LoadModule config_log_module /usr/lib/apache/1.3/mod_log_config.so
/etc/apache/modules.conf:LoadModule mime_magic_module /usr/lib/apache/1.3/mod_mime_magic.so
/etc/apache/modules.conf:LoadModule mime_module /usr/lib/apache/1.3/mod_mime.so
/etc/apache/modules.conf:LoadModule negotiation_module /usr/lib/apache/1.3/mod_negotiation.so
/etc/apache/modules.conf:LoadModule status_module /usr/lib/apache/1.3/mod_status.so
/etc/apache/modules.conf:LoadModule autoindex_module /usr/lib/apache/1.3/mod_autoindex.so
/etc/apache/modules.conf:LoadModule dir_module /usr/lib/apache/1.3/mod_dir.so
/etc/apache/modules.conf:LoadModule cgi_module /usr/lib/apache/1.3/mod_cgi.so
/etc/apache/modules.conf:LoadModule userdir_module /usr/lib/apache/1.3/mod_userdir.so
/etc/apache/modules.conf:LoadModule alias_module /usr/lib/apache/1.3/mod_alias.so
/etc/apache/modules.conf:LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so
/etc/apache/modules.conf:LoadModule access_module /usr/lib/apache/1.3/mod_access.so
/etc/apache/modules.conf:LoadModule auth_module /usr/lib/apache/1.3/mod_auth.so
/etc/apache/modules.conf:LoadModule expires_module /usr/lib/apache/1.3/mod_expires.so
/etc/apache/modules.conf:LoadModule setenvif_module /usr/lib/apache/1.3/mod_setenvif.so
/etc/apache/modules.conf:LoadModule php4_module /usr/lib/apache/1.3/libphp4.so

Si vous êtes pressé et qu'il est 2 heures du matin lancez la commande de recherche avec un nice -20 (Priorité maximum pour le processus) :

bulma2:~# nice -n -20 find /etc . -type f -print | xargs grep mod_rewrite

grep LoadModule va rechercher le mot LoadModule dans tous les fichiers de /etc

Dés que vous avez la réponse vous pouvez mettre fin à la recherche avec la combinaison : Control + c (ctrl c)

Vous avez donc trouvé le fichier /etc/apache/modules.conf. Il ne reste plus qu'à voir si la ligne LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so est bien présente.

Si vous ne trouvez pas la ligne, c'est que le mod_rewrite n'est pas activé, alors cherchez dans le dossier /usr ce fameux module mod_rewrite :

bulma2:~# nice -n -20 find /usr . -type f -print | xargs grep mod_rewrite

Ok si il répond par :

/usr/lib/apache/1.3/200mod_rewrite.info:LoadModule: rewrite_module /usr/lib/apache/1.3/mod_rewrite.so
Fichier binaire /usr/lib/apache/1.3/mod_rewrite.so concorde

La recherche dit que mod_rewrite.so se trouve dans /usr/lib/apache/1.3/mod_rewrite.so il faut donc ajouter dans le fichier /etc/apache/modules.conf la ligne : LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so et redémarrer Apache. Ouf...

Vous ne trouvez toujours pas l'endroit où se trouvent les fichiers :

Tentez une recherche dans tous les dossiers du serveur :

bulma2:~# find / . -type f -print | xargs grep LoadModule

bulma2:~# find / . -type f -print | xargs grep mod_rewrite

Plus rapide mais ne pas utiliser cette commande aux heures de pointe (N'oubliez pas que nice -n -20 va donner une priorité maxi à votre processus de recherche très gourmand en ressource) :

bulma2:~# nice -n -20 find / . -type f -print | xargs grep LoadModule

bulma2:~# nice -n -20 find / . -type f -print | xargs grep mod_rewrite

Vous avez tout trouvé et modifié, le fichier http://example.com/totalinfo.php vous indique que le mod_rewrite est présent, bravo. Toutes ces recherches n'ont rien donné ? Pfffffffff bordel...

Alors vous êtes bon pour une compilation d'apache : http://www.linuxfrench.net/article.php3?id_article=926


Tout est ok mais ça ne fonctionne toujours pas ? Alors il faut peut-être réaliser une petite modification dans le fichier de conf httpd.conf qui se trouve en principe dans /etc/apache/httpd.conf

Cherchez la ligne et remplacez AllowOverride none par AllowOverride All :

#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
AllowOverride All

Pour les autres distributions cherchez sur google : rewrite apache xoops

Et si ça fonctionne toujours pas, ne jouez pas au loto samedi. shutdown et dodo.


5. C'est terminé

Encore une fois : le fait de modifier le code source de xoops rend les mises à jour difficiles. Tant pis, s'il y a des mises à jour à faire il faut les réaliser quand même ! Au pire, vous refaites les règles de réécriture après une remise à niveau automatique du cms, c'est plus rapide que de mettre à jour xoops à la main.

Lignes foireuses :

Si vous souhaitez signaler des fotes ou otre :

Direction profil Ash, pour me contacter <<

Conclusion de cet article

Vous pouvez le modifier, l'améliorer, le mettre sur votre site, mais n'oubliez pas de citer la source

:merci:



<a href="http://www.bulma-animation.org/discussion/topic-732-forum-36">URL Rewriting sous XOOPS vu par Bulma Animation</a>


URL Rewriting sous XOOPS vu par Bulma Animation

Note: 0.00 (0 votes) - Noter cet article -

Partager Twitter Partagez cette article sur GG+
Format imprimable Envoyer cet article à un ami
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Régulier
Inscrit le: 07/09/2006
De: So So Far
Contributions: 478
Monoroom Posté le: 11/12/2006 00:06  Mis à jour: 11/12/2006 00:06
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Bonjour,

Merci pour cet article interressant et très important pour un URL rewriting.

superbe boulot
Régulier
Inscrit le: 09/04/2006
De:
Contributions: 125
ziwman Posté le: 11/12/2006 00:16  Mis à jour: 11/12/2006 00:16
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Supeeeeeeeeeeeeeeeeeerrr..!
c'est ce qui m'a manqué :banane: et me manque tjrs.

faut penser aux ressources coté serveur mnt
Supporter Xoops
Inscrit le: 09/01/2005
De: Breizh
Contributions: 16972
Kris Posté le: 11/12/2006 00:54  Mis à jour: 11/12/2006 00:54
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
(cool Superbe article, et très bien documenté.
Certains qu'il fera parti des bookmarks ne nombreux utilisateurs de Xoops.

Il ne me reste plus qu'à faire un tuto flash maintenant

Merci et encore bravo

Kris
Régulier
Inscrit le: 16/01/2005
De:
Contributions: 157
Ash Posté le: 11/12/2006 10:48  Mis à jour: 11/12/2006 10:49
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Content que ce soit utile Merci à celui qui a du s'arracher les cheveux pour mettre l'article aux normes du module News

Citation :
Faut penser aux ressources coté serveur maintenant


C'est vrai, j'ai oublié ce détail. Ça pompe un peu la machine le Rewrite mais c'est pas méchant. Enfin, ça dépend chez qui on est..


Citation :

Il ne me reste plus qu'à faire un tuto flash maintenant


Oui :-o , j'ai pas compris au début. Gros boulot en effet que tu proposes sur ton site
Régulier
Inscrit le: 09/04/2006
De:
Contributions: 423
Ankyo Posté le: 11/12/2006 16:03  Mis à jour: 11/12/2006 16:03
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Merci pour cet article, il est vraiment génial, en plus je cherchais un tuto pour le hack de kenogui c'est (cool
Semi pro
Inscrit le: 04/02/2003
De: Qc.ca
Contributions: 1389
king76 Posté le: 11/12/2006 17:28  Mis à jour: 11/12/2006 17:28
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
ouah, ca va en faire de la lecture ca.. mais j'ai hate de le mettre en place pour mes sites..

Merci
Newbie
Inscrit le: 14/04/2005
De: Bas Rhin
Contributions: 19
thetrancer Posté le: 12/12/2006 23:01  Mis à jour: 12/12/2006 23:01
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Moi j'ai hate que l'url rewriting soit d'office sur xoops ;)
Régulier
Inscrit le: 22/04/2005
De: Bruxelles
Contributions: 137
redcode Posté le: 13/12/2006 02:37  Mis à jour: 13/12/2006 02:37
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Bonsoir,

Voila j'ai essayer de mettre en marche le hack mais ya qq chose qui me block.

pourquoi la taille des fichier header.php et footer.php ne sonr pas les memes

Merci
Régulier
Inscrit le: 16/01/2005
De:
Contributions: 157
Ash Posté le: 13/12/2006 03:01  Mis à jour: 14/12/2006 16:22
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Bonsoir,

C'est normal que les tailles ne soient pas les mêmes, puisque les fichiers sont modifiés.

J'ai oublié un détail important, il faut utiliser uniquement les fichiers ModRegExp.php .htaccess SubDomainProtect.php

Ensuite appliquer les modifs expliquées dans le fichier Readme.txt

Dans le fichier header.php j'ai mis hier mon site à jour (( j'en ai ch@er mais arrivé :banane: )) j'ai eu des problèmes avec la version de ce fichier en xoops 2.0.16. Il y a deux morceaux de codes que je n'ai pas su où placer :

Alors j'ai fait ça pour xoops 2.0.16 fichier header.php (Le premier morceau de code est faciles à placer (début) Les deux derniers ci-dessous sont un peu plus difficiles :

Chercher la ligne :

$xoopsTpl->assign_by_ref'xoBlocks'$aggreg->blocks );


et ajouter après les lignes :

//kenogui HACK -- rewrite urls in main block (module in fact) before putting it in cache file

$rewrittenContent=replace_for_mod_rewrite($xoopsTpl->fetch($xoopsCachedTemplate$xoopsCachedTemplateId));

$xoopsTpl->assign('xoops_contents'$rewrittenContent);

//$xoopsTpl->assign('xoops_contents', $xoopsTpl->fetch($xoopsCachedTemplate, $xoopsCachedTemplateId));

//--- end hack



Chercher les lignes :



// Backward compatibility code for pre 2.0.14 themes
                
$xoopsTpl->assign_by_ref'xoops_lblocks'$aggreg->blocks['canvas_left'] );
                
$xoopsTpl->assign_by_ref'xoops_rblocks'$aggreg->blocks['canvas_right'] );
                
$xoopsTpl->assign_by_ref'xoops_ccblocks'$aggreg->blocks['page_topcenter'] );
                
$xoopsTpl->assign_by_ref'xoops_clblocks'$aggreg->blocks['page_topleft'] );
                
$xoopsTpl->assign_by_ref'xoops_crblocks'$aggreg->blocks['page_topright'] );

                
$xoopsTpl->assign'xoops_showlblock', !empty($aggreg->blocks['canvas_left']) );
                
$xoopsTpl->assign'xoops_showrblock', !empty($aggreg->blocks['canvas_right']) );
                
$xoopsTpl->assign'xoops_showcblock', !empty($aggreg->blocks['page_topcenter']) || !empty($aggreg->blocks['page_topleft']) || !empty($aggreg->blocks['page_topright']) );
        }


Et ajouter après la ligne :

//kenogui HACK -- rewrite urls in every side blocks before putting them in cache file

$bcontent=replace_for_mod_rewrite($bcontent);

//--- fin hack



Ça fait 24 heures que je debugge le site suite à sa mis à jour mais je n'ai trouvé aucune erreur causée par le hack kenogui, pour la version xoops 2.0.16


Edit : Après controle des fichiers dans le cache, le premier code que je propose n'a pas l'air de faire grand chose. Si on traduit le commentaire ça donne ceci :

////kenogui HACK -- récrire les urls dans les blocs (module en fait) avant de les mettre dans le dossier de cache

J'ai verifié, les url ne sont pas réécrites dans les fichiers de cache. Ça cause pas de problème (Peut-être un peu plus gourmand en ressource ?), les url sont quand même réécrites. Il faut trouver un moyen pour que les url soient réécrites dans les fichiers de cache, mais pour l'instant, no savoir...
Anonyme Posté le: 13/12/2006 20:49  Mis à jour: 13/12/2006 20:49
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
salut!

question:

pour un topic du forum nommée topic url rewrite

est il possible d'avoir non pas une url

www.monsite.com/modules/newbb/forum2-topic4859

avoir

www.monsite.com/topic2598-topic-url-rewrite

merci pour cet article fort interressant.
Régulier
Inscrit le: 16/01/2005
De:
Contributions: 157
Ash Posté le: 13/12/2006 23:25  Mis à jour: 13/12/2006 23:25
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Je suis en train d'étudier ça. Placer les mots clés dans une url c'est facile, mais traiter cette url pour l'épurer des "(-éèé_éç etc... j'y arrive po Pour l'instant

Avec URL Rewriting tout est possible. Je te conseille de chercher tous les sujets, hacks, de xoops traitant de la réécriture d'URL et de les analyser, t'inspirer de leurs codes, etc...
Régulier
Inscrit le: 22/04/2005
De: Bruxelles
Contributions: 137
redcode Posté le: 14/12/2006 02:14  Mis à jour: 14/12/2006 02:14
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Bonsoir,
et merci Ash.
j'ai une autre question j'ai essayer mais :( ca marche pas.
ya cette ligne dans Readme.txt
#around line 175 find : -------> (header.php biensur)
switch ($block_arr[$i]->getVar('side')) {
#before add:


mais je la trouve pas dans mon fichier header.php

etce jai louper qq chose :-o ???

sur mon navigateur l'erreur :

Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas.

merci
Régulier
Inscrit le: 15/05/2004
De:
Contributions: 105
xavhmn Posté le: 14/12/2006 09:46  Mis à jour: 14/12/2006 09:46
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Je trouve ton article sympas et intéressant, mais je croix que je vais être celui qui jette le cheveux dans la soupe .
Il existe d'autres façons pour l'url rewriting, le hack de suin est à mon avis celui qui marche le mieux, car il réécrit tout à la volée, de plus il est facile de l'intégrer dans xoops.
Son seul défaut est qu'il n'est pas personnalisable.
Je pense que la chose devrait être possible, si un bon programmeur se penchait dessus et en fasse un module a part entière, avec une interface de personnalisation.
Régulier
Inscrit le: 16/01/2005
De:
Contributions: 157
Ash Posté le: 14/12/2006 16:49  Mis à jour: 14/12/2006 16:57
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Redcode : J'ai fait un gros post justement pour ce problème, regarde un peu plus haut ou plus bas. ou ici = >>>> header.php <== Réponse

xavhmn : Tout à fait, il existe beaucoup de methode, c'est pour cette raison que j'ai expliqué la 2 aussi ^^ qui s'applique partout et surtout j'ai proposé celle de suin "Suin's Simplified URL" car le fichier simplified_url.php est très intéressant pour l'adapter à sa sauce .

Que l'on peut voir ici : Présentation de la méthode suin sur le site de Hervé
Aspirant
Inscrit le: 24/12/2003
De:
Contributions: 22
Sebkun_W Posté le: 26/12/2006 17:16  Mis à jour: 26/12/2006 17:16
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Merci Ash pour cet article assez exhaustif et très instructif. Cette lecture entraine une question de ma part. J'ai essayé le hack de url rewriting pour le module de news il y a quelques mois et je l'ai retiré pour la raison suivante :

Comme dans l'exemple (si mes souvenirs sont bons) le hack modifie en : monsite/modules/news/news-1.html

or, je ne comprends pas à quoi ça sert...*
L'intérêt de l'url rewriting n'est-il pas de faire une url genre :
monsite/modules/news/mon-titre-1.html
ou
monsite/modules/news/mes-mots-cles-de-la-news-1.html ?


* je tiens à préciser que je ne dénigre pas le travail effectué pour autant.
Régulier
Inscrit le: 16/01/2005
De:
Contributions: 157
Ash Posté le: 26/12/2006 23:38  Mis à jour: 26/12/2006 23:38
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
or, je ne comprends pas à quoi ça sert...* // Pour ton exemple, à pas grand chose, mis à part le fait d'obtenir des url propres.

L'intérêt de l'url rewriting c'est de réécrire les url de 3 kilomètres avec 50 variables (j'exagère ^^) en quelque chose de plus humain ;) Après il y a plusieurs méthodes comme celle de placer les mots clés dans l'url de façon dynamique. Pour les articles et noms de catégories, en effet c'est plus pertinent et assez simple à réaliser. Je vais mettre prochainement un exemple pour le module de news que je ne connais pas, mais ça doit pas être sorcier à faire.
Régulier
Inscrit le: 16/01/2005
De:
Contributions: 157
Ash Posté le: 27/12/2006 06:44  Mis à jour: 27/12/2006 06:51
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Donc comme promis, j'ai fait un petit hack pour le module news Version 1.44 de Hervé Thouzard <== Voir ici :

Testé avec Xoops 2.0.16 et news 1.44 - Ne pas utiliser sur un site en production sans l'avoir testé avant sur vos sites de test

http://ash-md.lubma.net/archives/lio/xoops/news.zip

Sauvegardez le dossier news avant d'appliquer ce mini hack.

Il contient un fichier .htaccess (A placer à la racine du dossier news) et un fichier class.newsstory.php (A placer dans le dossier news/class)

Ce hack traite uniquement les liens article.php?storyid= de la page d'accueil de façon automatique. C'est juste un petit echantillon. Les liens sont de type : modules/news/article-1-mon-super-titre

Accents, caractères spéciaux, espaces, etc, sont remplacés par des caractères sans accents ou tirets.

Avec un peu de travail, toutes les url du modules peuvent être réécrites avec leur titre. Il faut chercher au niveau des fichiers index.php, article.php.

Pour le complèter il faut s'inspirer des fichiers .htaccess et class.newsstory.php <= J'ai placé de gros commentaires pour voir du premier coup les modifs. Il suffit de faire une recherche dans le fichier avec le mot clé Rewrite, exemple de modif :


//

        //Rewrite article.php?storyid= avec titre [Debut]

        //

        

        
$morelink .= '<a href="'.XOOPS_URL.'/modules/news/article-'.$this->storyid().'-'.$titre strtr($this->title()," ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ()[]'~$&%*@!?;,:/^€{}|+-","-AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn-------------------E-----").'';

        

        
//$morelink .= '<a href="'.XOOPS_URL.'/modules/news/article.php?storyid='.$this->storyid().'';

            

        //

        //Rewrite article.php?storyid= avec titre [Fin]

        //
Aspirant
Inscrit le: 24/12/2003
De:
Contributions: 22
Sebkun_W Posté le: 02/01/2007 18:11  Mis à jour: 02/01/2007 18:11
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Super !! merchi beaucoup monchieur !!

Et bonne année bien chûr !!
Newbie
Inscrit le: 05/01/2007
De:
Contributions: 1
Asshi Posté le: 05/01/2007 15:39  Mis à jour: 05/01/2007 15:40
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Bonjour.

Merci pour cet excellent article très détaillé.

J'essaie actuellement de mettre en place ce système sur le site sur lequel je travaille. Mais avant même d'en arriver là, je suis confronté à un souci de htaccess simple et donc pour le moins énervant sur lequel je souhaiterais faire appel à votre expérience.

Le site en question est hébergé chez 1&1. Le site xoops est stocké dans un répertoire site/ situé à la racine du serveur. Je dispose d'un nom de domaine http://www.blabla.com qui pointe directement vers le répertoire site/, ce sans aucun problème.

Je tente de mettre en place une redirection simple pour test : je souhaite que tout visiteur arrivant sur la page http://www.blabla.com/test.html soient redirigés bêtement et simplement vers http://www.blabla.com/index.php .

Pour ce faire j'ai essayé un nombre conséquent de combinaisons allant du simple :

Citation :
RewriteEngine on
RewriteRule ^nexistepas.html$ index.php [L]


à

Citation :
RewriteEngine on
RewriteBase site/
RewriteRule ^nexistepas.html$ index.php


en passant par

Citation :
RewriteEngine on
RewriteBase /
RewriteRule ^site/nexistepas.html$ site/index.php


et tout un tas d'autres positions (ou absence de positions) possibles pour le nom du sous-repertoire et les /.

Apres plusieurs heures infructueuses aucune combinaison n'a réalisé ce que je lui ai demandé. a titre indicatif, il n'y a pas de htaccess à la racine du serveur.

Quelqu'un aurait-il une idée de LA syntaxe magique qui fera fonctionner tout cela ?

Merci d'avance pour votre aide.
Régulier
Inscrit le: 09/04/2006
De:
Contributions: 423
Ankyo Posté le: 20/01/2007 16:29  Mis à jour: 20/01/2007 16:29
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Bonjour,
Je n’arrive pas à mettre en ouvre URL Rewriting en local, j’ai modifié le fichier header.php et footer.php comme indiquer dans le tuto, mais malgré ça, ça ne marche toujours pas, à chaque fois je veux me connecter à mon site en local, j’ai ce message d’erreur :
Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas.
Anonyme Posté le: 26/02/2007 15:45  Mis à jour: 26/02/2007 15:45
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
@ Asshi :

Essaye cette solution :

Citation :
RewriteEngine on
RewriteRule ^nexistepas.html$ site/index.php [L]

Sur certains hébergements, le [L] est quasi-obligatoire.
Anonyme Posté le: 26/02/2007 15:55  Mis à jour: 26/02/2007 15:55
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Parce que je suis confronté à cela sur un portail, la réécriture des liens en dur dans le code est fastidieuse (mais, certainement la meilleure pour les perfs). Toutefois, il faut faire attention aux soumissions de formulaire : la totalité des liens des formulaires dans les "form" sont en relatifs; avec l'url-rewriting, il faut des liens résolus partout si on "saute" des étages de répertoire.

Par exemple, avec une redirection sur la partie recherche de NewBB, supposons cette redirection:
RewriteRule ^forum-recherche.htmlmodules/newbb/search.php [L]

On "saute" les répertoires modules et newbb, le 'action' dans le formulaire contenu dans le templates "newbb_search.html" doit être modifié en
<form name="Search" action="<{$xoops_url}>/modules/newbb/search.php" method="get">

Si vous laissez action="search.php" sans indiquer le chemin complet, ça ne fonctionne plus...
Régulier
Inscrit le: 26/02/2007
De:
Contributions: 494
aquaportail Posté le: 26/02/2007 16:05  Mis à jour: 30/11/2010 14:37
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Pour les 2 commentaires précédents, je crois que j'ai fait une petite cagade dans les pseudos... Typiquement, il faut éviter de confondre le sac vitellin d'un vivipare chez un alevin vésiculé.

Régulier
Inscrit le: 09/12/2005
De:
Contributions: 187
FaYsSaL Posté le: 12/04/2007 19:01  Mis à jour: 12/04/2007 19:01
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
du nouveauté apropos l'url rewriting pour le module news?
Régulier
Inscrit le: 20/01/2007
De:
Contributions: 112
overmysoul Posté le: 05/06/2007 12:44  Mis à jour: 05/06/2007 13:46
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Bon je me lance dans le développement d un module url_rewriting pour xoops.

Y a pas mal d'éceuils à surmonter mais j ai quelque idées.. à voir maintenant ce que cela va donner

Pour plus d'infos :
cliquez ici pour plus d info

Bon je vais acheter du café et des clopes à foison
Anonyme Posté le: 28/10/2007 12:58  Mis à jour: 28/10/2007 12:58
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
oui mais pour les pas doués comme moi malgré s'il trouve l'aide d'un ami super doué lui, pour re-écrire les liens de tous ses modules de son site il faut que je passe le plus simple par quelle méthode?
y a t il un tuto?
pas à pas?
ou un module avec une interface administration?

car le souci est que il y a tellement d'infos ici que je trouille de savoir par où commencer.
pour info : moi je veux simplifier les liens sur en priorité le profil des membres, sur le module news sur le module page et sur le forum newbbex
que me conseillez-vous?
Newbie
Inscrit le: 28/02/2008
De:
Contributions: 4
Dje972 Posté le: 19/05/2008 17:57  Mis à jour: 19/05/2008 17:59
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Salut à tous !

Comme beaucoup d'entre vous je suis en train de lutter pour le référencement. Parmi les solutions il y a le re writing, les url simplifiées etc... qui aident à avoir des url plus explicites.

J'ai une question pour les programmeurs :
Quand je prends l'exemple de xoops, je constate que le formatage des urls est le suivant :

XOOPS_URL."/modules/news/article.php?storyid=xx

soit

Xoops_url/modules/nom du module/article.php?storyid=id de l'article

Est ce un formatage imposé par le langage php ?

Sinon pourquoi ne pas formater les urls comme suit

XOOPS_URL."/modules/news/$story['news_title'] = $article->title()

ce qui donnerait

XOOPS_URL."/modules/news/nom de l'article.

Les mots clés du titre associés aux métas feraient peut être mieux que tous les hack non ?

Merci pour les réponses
Régulier
Inscrit le: 16/01/2005
De:
Contributions: 157
Ash Posté le: 10/12/2011 23:57  Mis à jour: 10/12/2011 23:57
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
Bon ! on fait un xoops 100 % avec un vrai modules URL Rewriting pour que les visiteurs se tapent de jolies url ? avec de jolis mots clés ? ; parce-que pour le SEO ça sert plus à rien... Sauf Indirectement ! Ruse ! à la loyal bien sûr (voir plus bas)

-----------
@Dje972 Posté le: 19/05/2008 17:57:32 : Les mots clés du titre associés aux métas feraient peut être mieux que tous les hack non ?

----------

Les mots clés du titre en avant : exemple : t'es un boss / forum newbb

Pour le SEO ; même si je réponds 10 ans plus tard ; tu as tout compris... les hack sont obsolètes niveau ref...

Vaut mieux penser utilisateur ; il feront plus volontierement un lien sur un forum avec une jolie url qu'un

jehjkqjkqhjkfHKHFKJQFHjkjkQKJFJKKJSfjkjgkjfkjsdfjksdfhkjsFKJSDFJKDFHjksffhjsfhjkshfsjkdf

Donc indirectement ; ça peut servir en référencement naturel. lol
Régulier
Inscrit le: 26/02/2007
De:
Contributions: 494
aquaportail Posté le: 28/12/2011 18:39  Mis à jour: 28/12/2011 18:39
 Re: Réécriture d'URL [URL Rewriting sous XOOPS]
@ash : c'est sûr que www.aquaportail.com/articles-i ... oisson-rouge-records.html est bien plus causant.

Aquaportail est 99% URL-rewrité depuis début 2007, et c'est bien du Xoops (une 2.0 modifiée). Mais, curieusement, ça n'a jamais semblé être une priorité de développement de Xoops malgré que 100% des "concurrents" l'ont fait.
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

20 Personne(s) en ligne (2 Personne(s) connectée(s) sur Articles) | Utilisateur(s): 0 | Invité(s): 20 | Plus ...