Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2011, 10h08   #1
Membre du Club
 
Avatar de Paniez
 
Inscription : janvier 2003
Messages : 160
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2003
Messages : 160
Points : 54
Points : 54
Par défaut URL Rewriting pour toutes les pages

Bonjour,

J'ai quelques règles (5 en tout) en place qui fonctionnent bien.
Cela dit, quelques requêtes passent à travers ces règles et aimerais les rediriger.
Du coup, j'aimerais avoir :
Code :
1
2
3
4
RewriteRule ... [L]
RewriteRule ... [L]
...
RewriteRule ^.*$ pagetrounoir.php?param=$1
où cette dernière règle est celle que je cherche.
Avec celle-ci, le problème est que toutes les pages sont réécrites (même celles déjà réécrites et qui fonctionnaient auparavant), alors que je souhaite que cela soit pour les pages ne correspondant pas aux premières règles uniquement.

Bonne journée
Paniez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 22h17   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 299
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 299
Points : 8 583
Points : 8 583
La façon la plus simple est d'ajouter un paramètre d'URL spécifique dans les premières réécritures et qui te sert de test sur la dernière réécriture : si le paramètre est absent, tu réécris.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 07h45   #3
Membre du Club
 
Avatar de Paniez
 
Inscription : janvier 2003
Messages : 160
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2003
Messages : 160
Points : 54
Points : 54
Citation:
Envoyé par _Mac_ Voir le message
La façon la plus simple est d'ajouter un paramètre d'URL spécifique dans les premières réécritures et qui te sert de test sur la dernière réécriture : si le paramètre est absent, tu réécris.
Bonjour,

Je rajoute déjà des paramètres, donc je peux faire le test (en revanche, je ne sais pas faire ce genre de chose).
Toujours est-il que cette dernière règle à remplacer les dernières urls passez au travers et qui doit s'appliquer aussi bien à :
http://mondomaine.com/test.html que http://mondomaine.com/test/test/test.html
d'où le ^.*$ qui me permet de tout filtrer.
L'idéal serait plus un
Si une réécriture a été faite, alors on ne fait plus rien, sinon on fait cette dernière règle.
Paniez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 18h17   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 299
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 299
Points : 8 583
Points : 8 583
Citation:
Envoyé par Paniez Voir le message
Si une réécriture a été faite, alors on ne fait plus rien, sinon on fait cette dernière règle.
C'est bien pour faire ce genre de chose que je suggère d'utiliser une variable d'URL. Ce n'est peut-être pas très propre mais ça marchera.

Il faut utiliser RewriteCond pour tester la présence de la variable d'URL :
Code :
1
2
3
4
5
6
RewriteRule ... ...?variableenplus=1 [L]
RewriteRule ... ...?variableenplus=1 [L]
...

RewriteCond %{REQUEST_URI} !variableenplus=1
RewriteRule ^.*$ pagetrounoir.php?param=$1
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 07h36   #5
Membre du Club
 
Avatar de Paniez
 
Inscription : janvier 2003
Messages : 160
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2003
Messages : 160
Points : 54
Points : 54
Re,

Avant tout, bonnes fêtes de fin d'année.

Ensuite, je ne suis pas fan pour ajouter une variable. Mais, ça me donne une idée de repenser ma réécriture.
Toutes mes pages sont de la forme (en rewriteurl) : ^([A-Za-z0-9_]+)-([A-Za-z0-9_:]+)-([A-Za-z0-9_]+)-([A-Za-z0-9_]+)\\.html$
Du coup, si je comprends bien rewritecond, on peut faire un truc du genre :
Code :
1
2
3
4
RewriteCond %{REQUEST_URI} ^([A-Za-z0-9_]+)-([A-Za-z0-9_:]+)-([A-Za-z0-9_]+)-([A-Za-z0-9_]+)\\.html$
RewriteRule .... [L]
RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_]+)-([A-Za-z0-9_:]+)-([A-Za-z0-9_]+)-([A-Za-z0-9_]+)\\.html$
RewriteRule ^.*$ pagetrounoir.php?param=$1
Et ça, à la place de toutes me règles.
Paniez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 10h48   #6
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 299
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 299
Points : 8 583
Points : 8 583
Oui
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 18h44   #7
Membre du Club
 
Avatar de Paniez
 
Inscription : janvier 2003
Messages : 160
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2003
Messages : 160
Points : 54
Points : 54
Re,

Pour fonctionner, ça fonctionne ; ça fonctionne un peu beaucoup trop par contre : plus de css, javascript, sans parler des images.
Là où j'ai du mal à comprendre est que même mes pages bien formées passent dedans.

Du coup, je vais recommencer mon post.


Mes pages sont de la forme http://mondomaine.ltd/mapage.html que je transforme avec un rewriterule en http://mondomaine.ltd/index.php?page=mapage

Je souhaite que toutes demandes à mon serveur soient réécrites en cette forme (si on met http://mondomaine.ltd/sfdfsdfsfsfsfds.fdsf.fsdfdfs que ça devienne http://mondomaine.ltd/index.php?page=sfdfsdfsfsfsfds.fdsf.fsdfdfs).
Pour exclure les css, js et images, j'ai fait un :
Code :
1
2
3
4
5
RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_/]+)\.css$
RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_/]+)\.js$
RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_/]+)\.png$
RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_/]+)\.jpg$
RewriteCond %{REQUEST_URI} !^([A-Za-z0-9_/]+)\.gif$
Bonne journée
Paniez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 19h16   #8
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 299
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 299
Points : 8 583
Points : 8 583
Tu as une façon plus simple d'écrire toutes tes RewriteCond en 1 ligne qui signifie "si l'URL qu'on demande ne correspond pas à un fichier existant" :
Code :
RewriteCond %{REQUEST_FILENAME} !-f
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h34.


 
 
 
 
Partenaires

Hébergement Web