Artiphp - CMS open source et gratuit
Vous êtes ici » Accueil/Forum
Saisissez votre recherche
RechercherRechercher   Liste des MembresListe des Membres   S'enregistrerS'enregistrer    ProfilProfil 
Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 


URL rewriting : nouvelle forme de .htaccess
Aller à la page 1, 2  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Artiloo.com Index du Forum -> Le coin des testeurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
jimro



Inscrit le: 07 Oct 2004
Messages: 6918

MessagePosté le: Dim 18 Sep 2011 10:16    Sujet du message: URL rewriting : nouvelle forme de .htaccess Répondre en citant

Mise à jour :
La 4e forme de fichier .htaccess pour l'URL rewriting a été intégrée dans Artiphp 5 à compter de la révision 410 (voir post 54008 ci-dessous).



Nous vous proposons une nouvelle forme de fichiers .htaccess pour l'URL rewriting, à tester par les Artinautes hébergeant leur site Artiphp sur un serveur permettant son utilisation.

Ce sujet avait été abordé en 2009. Voir ici :
http://www.artiloo.com/phpBB2/viewtopic.php?t=9474



Cette nouvelle syntaxe devrait permettre de :

* utiliser une seule forme de fichier .htaccess pour un module (et ses éventuels duplicata) sans avoir besoin de modifier le chemin depuis la racine Web du site : celui-ci est déterminé automatiquement par le script
* simplifier les tests lors de l'installation : un seul test pour déterminer si le serveur accepte ou non l'URL rewriting
* ne conserver que la constante ARTI_URL_TYPE dans le fichier de configuration /artpublic/config.inc.php
* supprimer la constante ARTI_URL_REWRITING_MODE, devenue obsolète, se trouvant dans /artpublic/config.inc.php, ainsi que les traitements PHP effectués lors de l'installation de la base d'Artiphp 5 et des modules

Rappel des modules bénéficiant de cette fonctionnalité :

* auteurs
* tags
* agenda
* annuaire
* boutique
* cartographie
* cinema
* dossiers
* download
* emploi
* faq
* galeries
* glossaire
* mediatheque
* news
* recherche


Si les tests s'avèrent positifs, les scripts PHP seront modifiés en conséquence.

Merci pour votre coopération.


jimro


Dernière édition par jimro le Mar 01 Nov 2011 15:54; édité 1 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
popoke



Inscrit le: 25 Oct 2005
Messages: 920
Localisation: Québec

MessagePosté le: Dim 18 Sep 2011 23:20    Sujet du message: Répondre en citant

bonjour,

J'ai lu la nouvelle.
Pour tester sur mon serveur, je dois remplacer les .htacces par les nouveaux si j'ai tout compris et indiquez ici si tout fonctionne bien ?

popoke
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur Yahoo Messenger
jimro



Inscrit le: 07 Oct 2004
Messages: 6918

MessagePosté le: Lun 19 Sep 2011 8:07    Sujet du message: Répondre en citant

C'est bien ça.

jimro

NB : Faites une sauvegarde de vos fichiers .htaccess avant leur remplacement ou modification.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
fred35



Inscrit le: 23 Avr 2009
Messages: 637

MessagePosté le: Dim 25 Sep 2011 10:18    Sujet du message: Répondre en citant

Bonjour,

Pour ma part, après avoir parcouru la Faq de 1&1 je dois rajouter ces 2 lignes au .htaccess que tu proposes entre RewriteEngine On:

Code:
Options +FollowSymLinks
RewriteBase /

Je n'ai pas encore eu le temps de faire le test par contre.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
jimro



Inscrit le: 07 Oct 2004
Messages: 6918

MessagePosté le: Dim 25 Sep 2011 16:03    Sujet du message: Répondre en citant

fred35 a écrit:
Je n'ai pas encore eu le temps de faire le test par contre.

OK. On verra le résultat de tes tests, avec ou sans les modifications recommandées par 1&1.


jimro
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
fred35



Inscrit le: 23 Avr 2009
Messages: 637

MessagePosté le: Lun 26 Sep 2011 10:18    Sujet du message: Répondre en citant

Et bien dans tout les cas çà ne fonctionne pas.

J'ai essayé avec et sans les recommandation de 1and1 et j'ai une erreur 404.

L'url rewritting ne fonctionne qu'avec la méthode 2 de l'installation chez moi il semblerait.

je précise qu'il s'agit d'un hébergement mutualisé.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
jimro



Inscrit le: 07 Oct 2004
Messages: 6918

MessagePosté le: Lun 26 Sep 2011 15:13    Sujet du message: Répondre en citant

Merci pour tes retours.

En fait, avec la première forme de .htaccess, le %1 qui devrait correspondre au chemin n'est pas récupéré puisque les conditions sont fausses. Il faudrait alors préciser le répertoire du module avec RewriteBase, ex. :
Code:
RewriteBase /dossiers

ce qui enlève tout intérêt à la manip
puisque le but est d'utiliser, sans avoir à le modifier, le même fichier .htaccess pour un module et ses duplicata.


Je te propose, ainsi qu'aux autres artinautes intéressés, d'essayer deux nouvelles formes de .htaccess pour le module Dossiers :

Forme 2
Code:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} ^(.*/)[^/]*\.html [OR]
RewriteCond %{THE_REQUEST} ^GET\ (.*/)[^/]*\.html\ HTTP/

RewriteRule ^categorie_([0-9]+)_([^.]*)\.html$ %1cat.php?idcat=$1 [QSA,L]

RewriteCond %{REQUEST_URI} ^(.*/)[^/]*\.html [OR]
RewriteCond %{THE_REQUEST} ^GET\ (.*/)[^/]*\.html\ HTTP/

RewriteRule ^cat_([0-9]+)_([0-9]+)_([0-9]+)_([^.]*)\.html$ %1cat.php?idcat=$1&page=$2&limit=$3 [QSA,L]

RewriteCond %{REQUEST_URI} ^(.*/)[^/]*\.html [OR]
RewriteCond %{THE_REQUEST} ^GET\ (.*/)[^/]*\.html\ HTTP/

RewriteRule ^allcat_([0-9]+)_([0-9]+)\.html$ %1cat.php?page=$1&limit=$2 [QSA,L]

RewriteCond %{REQUEST_URI} ^(.*/)[^/]*\.html [OR]
RewriteCond %{THE_REQUEST} ^GET\ (.*/)[^/]*\.html\ HTTP/

RewriteRule ^dossier_([0-9]+)_([^.]*)\.html$ %1dossier.php?id_dossier=$1 [QSA,L]

RewriteCond %{REQUEST_URI} ^(.*/)[^/]*\.html [OR]
RewriteCond %{THE_REQUEST} ^GET\ (.*/)[^/]*\.html\ HTTP/

RewriteRule ^dossier_suite_([0-9]+)_([0-9]+)_([^.]*)\.html$ %1dossier.php?id_dossier=$1&idparent=$2 [QSA,L]
</IfModule>


Forme 3
Code:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /

SetEnvIf Request_URI ^(.*/)[^/]*\.html my_mod_path=$1

RewriteRule ^categorie_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}cat.php?idcat=$1 [QSA,L]
RewriteRule ^cat_([0-9]+)_([0-9]+)_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}cat.php?idcat=$1&page=$2&limit=$3 [QSA,L]
RewriteRule ^allcat_([0-9]+)_([0-9]+)\.html$ %{ENV:my_mod_path}cat.php?page=$1&limit=$2 [QSA,L]
RewriteRule ^dossier_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}dossier.php?id_dossier=$1 [QSA,L]
RewriteRule ^dossier_suite_([0-9]+)_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}dossier.php?id_dossier=$1&idparent=$2 [QSA,L]
</IfModule>


J'ai testé sur un serveur utilisant des alias de répertoires et ça fonctionne correctement.


jimro
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
jimro



Inscrit le: 07 Oct 2004
Messages: 6918

MessagePosté le: Mer 05 Oct 2011 19:15    Sujet du message: Répondre en citant

Voici une 4e (et ultime, j'espère ) forme de fichier .htaccess (toujours à tester pour le module Dossiers) qui, selon les tests que j'ai pu effectuer sur différents serveurs, semble convenir :
Code:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /

# Un ou plusieurs RewriteCond (ne s'applique qu'au RewriteRule suivant)
RewriteCond %{REQUEST_URI} ^(.*/)[^/]*\.html [OR]
RewriteCond %{THE_REQUEST} ^GET\ (.*/)[^/]*\.html\ HTTP/

# Récupérer chemin %1 (1ère parenthèse de RewriteCond) depuis racine Web dans variable d'environnement my_mod_path
RewriteRule .* - [E=my_mod_path:%1]

# Utilisation de la variable my_mod_path dans les URLs réécrites par RewriteRule
RewriteRule ^categorie_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}cat.php?idcat=$1 [QSA,L]
RewriteRule ^cat_([0-9]+)_([0-9]+)_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}cat.php?idcat=$1&page=$2&limit=$3 [QSA,L]
RewriteRule ^allcat_([0-9]+)_([0-9]+)\.html$ %{ENV:my_mod_path}cat.php?page=$1&limit=$2 [QSA,L]
RewriteRule ^dossier_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}dossier.php?id_dossier=$1 [QSA,L]
RewriteRule ^dossier_suite_([0-9]+)_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}dossier.php?id_dossier=$1&idparent=$2 [QSA,L]
</IfModule>

Elle est, en principe, aussi fiable que la forme proposant la répétition des RewriteCond pour chaque RewriteRule (forme 2 ci-dessus), tout en étant plus concise.

La référence arrière %1 est cette fois récupérée dans un RewriteRule "neutre" pour l'affecter à une variable d'environnement 'my_mod_path', utilisée ensuite dans les RewriteRule. Un autre avantage est qu'il n'est pas nécessaire d'avoir mod_setenvif activé au niveau du serveur Apache.

Si vos tests confirment son bon fonctionnement, c'est cette 4e forme de .htaccess qui sera utilisée très rapidement dans Artiphp, pour simplifier, comme déjà indiqué, la procédure d'installation de la base et des modules.

Vous pourrez indiquer également dans vos retours de test le nom et le type d'hébergement, ce qui aidera sans aucun doute les autres artinautes.

Merci d'avance pour vos contributions.


jimro
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
jimro



Inscrit le: 07 Oct 2004
Messages: 6918

MessagePosté le: Dim 09 Oct 2011 19:47    Sujet du message: Répondre en citant

Les testeurs se seraient-ils perdus dans le labyrinthe du code ?

jimro
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
fred35



Inscrit le: 23 Avr 2009
Messages: 637

MessagePosté le: Lun 17 Oct 2011 12:15    Sujet du message: Répondre en citant

Et bien, se fut long, mais je suis content de pouvoir t'annoncer que la 4em forme de .htaccess que tu proposes fonctionne chez moi.

Test effectué sur ce site en cours de construction

Est ce utile de tester les autres forme ?

Mon hébergeur : 1&1
Hébergement Linux, pack 1&1 dual classique


Dernière édition par fred35 le Lun 17 Oct 2011 22:45; édité 1 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
jimro



Inscrit le: 07 Oct 2004
Messages: 6918

MessagePosté le: Lun 17 Oct 2011 16:29    Sujet du message: Répondre en citant

Merci pour les tests effectués.

Je mettrai à jour en conséquence les scripts d'installation de la base d'Artiphp 5 et des modules lors d'une prochaine révision.

fred35 a écrit:
Est ce utile de tester les autres formes ?

Eventuellement la forme 2, si tu as le temps, mais je suis quasiment sûr qu'elle fonctionne partout.


jimro
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
fred35



Inscrit le: 23 Avr 2009
Messages: 637

MessagePosté le: Lun 17 Oct 2011 16:56    Sujet du message: Répondre en citant

La forme 2 fonctionne également chez moi

Mais j'ai remis la 4 du coup
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
jimro



Inscrit le: 07 Oct 2004
Messages: 6918

MessagePosté le: Lun 17 Oct 2011 17:09    Sujet du message: Répondre en citant

Merci pour cette confirmation

jimro
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
fred35



Inscrit le: 23 Avr 2009
Messages: 637

MessagePosté le: Lun 17 Oct 2011 17:31    Sujet du message: Répondre en citant

hummm... on est vraiment plus que 2 là ?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
fred35



Inscrit le: 23 Avr 2009
Messages: 637

MessagePosté le: Mer 26 Oct 2011 2:58    Sujet du message: Répondre en citant

petite question :

ton code (4) :
Code:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /

# Un ou plusieurs RewriteCond (ne s'applique qu'au RewriteRule suivant)
RewriteCond %{REQUEST_URI} ^(.*/)[^/]*\.html [OR]
RewriteCond %{THE_REQUEST} ^GET\ (.*/)[^/]*\.html\ HTTP/

# Récupérer chemin %1 (1ère parenthèse de RewriteCond) depuis racine Web dans variable d'environnement my_mod_path
RewriteRule .* - [E=my_mod_path:%1]

# Utilisation de la variable my_mod_path dans les URLs réécrites par RewriteRule
RewriteRule ^categorie_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}cat.php?idcat=$1 [QSA,L]
RewriteRule ^cat_([0-9]+)_([0-9]+)_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}cat.php?idcat=$1&page=$2&limit=$3 [QSA,L]
RewriteRule ^allcat_([0-9]+)_([0-9]+)\.html$ %{ENV:my_mod_path}cat.php?page=$1&limit=$2 [QSA,L]
RewriteRule ^dossier_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}dossier.php?id_dossier=$1 [QSA,L]
RewriteRule ^dossier_suite_([0-9]+)_([0-9]+)_([^.]*)\.html$ %{ENV:my_mod_path}dossier.php?id_dossier=$1&idparent=$2 [QSA,L]
</IfModule>


pourquoi mettre .html$ et pas .php$ ?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Artiloo.com Index du Forum -> Le coin des testeurs Toutes les heures sont au format GMT + 1 Heure
Aller à la page 1, 2  Suivante
Page 1 sur 2

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com