Ouiiin! Ça fonctionne pas!

  • Auteur de la discussion Auteur de la discussion John
  • Date de début Date de début
Nouveau WRInaute
Désolé de crier comme ça mais ça fait 2H que je suis dessus, alors je viens vous supplier de l'aide.

J'ai testé l'UR chez mon hebergeur avec un truc tout simple:
Code:
RewriteRule /* https://www.google.com

Ça fonctionne. Donc le problème ne vient pas de mon hébergeur.
Voiçi mon URL de base:
http://www.mondomaine.com/new/articles/2_5.html
Qui doit se transformer en:
http://www.mondomaine.com/new/articles/?n=2&t=5

J'utilise donc ça:
Code:
Options +FollowSymlinks 
RewriteEngine on
RewriteRule ^/new/articles/([0-9]*)_([0-9]*)\.html /new/articles/?n=$1&t=$2 [NC,L]

Le fichier cible est index.html, le fichier par défaut, donc pas la peine de le préciser dans la rule je suppose.
Eh ben ça fonctionne pas! Il me dit "/new/articles/2_5.html was not found "
Où est le problème?? Merci!
 
WRInaute discret
le probleme, je pense, c'est que lorsque tu demandes /new/articles/x_y.html
apache se fie au .htaccess du repertoire /new/articles

essaie de placer un .htaccess contenant:

Code:
RewriteRule ^([0-9]+)_([0-9]+)\.html /new/articles/?n=$1&t=$2 [NC,L]

dans ton repertoire /new/article pour voir.

Ben
 
Nouveau WRInaute
Hello Ben!

Je viens de tester, ça change rien :cry:
Mais en fait je vois pas trop pkoi ça changerai qqchose, puisque le .htaccess qui est à la racine de mon site donnent ses directives à tout les sous-repertoires, non?
 
WRInaute discret
tu as raison, je raconte n'importe quoi :oops:

en fait c'est le / du debut qui posait probleme, j'ai fait un test

Code:
RewriteRule ^new/articles/([0-9]*)_([0-9]*)\.html$ /new/articles/?n=$1&t=$2

ca fonctionne (pas de / devant new et $ pour marquer la fin de l'expression)

Ben
 
H
hetzeld
Guest
John a dit:
Hello Ben!

Je viens de tester, ça change rien :cry:
Mais en fait je vois pas trop pkoi ça changerai qqchose, puisque le .htaccess qui est à la racine de mon site donnent ses directives à tout les sous-repertoires, non?
Salut John,

D'accord, sauf si tu définis d'autres règles dans le .htaccess d'un sous répertoire sans mettre la clause "RewriteOptions Inherit"

Mais il est inutile que, pour tous les fichiers hors du répertoire /new/article/, la comparaison par rapport à cette règle soir effectuée pour trouver un "match"
Le but du jeu, question performance, est d'avoir le minimum de fichiers/règles pour chaque répertoire.

Dans le fichier /new/article/.htaccess, mets ce qui suit:
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([0-9]+)_([0-9]+)\.html   ?n=$1&t=$2   [L]
Cela devrait fonctionner. :wink:
Si cela coince, tu peux essayer
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteBase /new/engine 
RewriteRule ^([0-9]+)_([0-9]+)\.html   ?n=$1&t=$2   [L]
Dan
 
Nouveau WRInaute
Je viens de tester le code de Ben
Code:
RewriteRule ^new/articles/([0-9]*)_([0-9]*)\.html$ /new/articles/?n=$1&t=$
Ça fonctionne nickel !! Merci Ben !!

Je n'ai pas essayé ce que tu m'as proposé Hertzeld. C'est quand même mieux ? Qu'est ce que ça change ?
 
H
hetzeld
Guest
John,

La seule chose que cela change c'est que la règle ne sera vérifiée que pour les fichiers se trouvant dans /new/article/ et non pour tous les fichiers du site...
Question d'optimiser un peu les perfs, c'est tout !

Dan
 
Nouveau WRInaute
Je comprends pas trop. Avec la version de Ben non plus ça va pas traiter les fichiers qui sont pas dans /new/articles/
 
WRInaute discret
Salut John,

fais confiance a Dan, c'est notre Guru du mod_rewrite !! :D

En fait (si j'ai bien compris) cette version est plus optimisée, avec le code que je t'ai donné le serveur web Apache va verifier la regle a chaque requete, meme si la requete n'a rien a voir avec le repertoire concerné. Tandis qu'avec la version de Dan, Apache ne testera la regle que si la requete a lieu dans le repertoire en question.

Bonne journée,

Ben
 
H
hetzeld
Guest
Ben a dit:
En fait (si j'ai bien compris) cette version est plus optimisée, avec le code que je t'ai donné le serveur web Apache va verifier la regle a chaque requete, meme si la requete n'a rien a voir avec le repertoire concerné. Tandis qu'avec la version de Dan, Apache ne testera la regle que si la requete a lieu dans le repertoire en question.
Tu as très bien compris ! :wink:
Lorsqu'on met des règles de réécriture dans un fichier .htaccess, ces règles sont analysées pour toutes les requètes de fichiers situés dans ce répertoire et tous les sous-répertoires. Si on met ce fichier à la racine du site, toutes les requêtes seront analysées pour toutes les règles (produit cartésien) et les performances s'en ressentiront automatiquement.
Les meilleures performances sont obtenues lorsque chaque répertoire contient juste les règles qu'il faut localement, et pas une de plus.

Cordialement,

Dan
 
Nouveau WRInaute
Avant de venir vous voir j'avais envoyé un email à mon hébergeur (dreamhost.com). Voilà la réponse. J'suis dégouté ils vont arrêter de supporter l'UR. Apparement il y a trop de gens qui déconnent avec l'UR et plantent les serveurs.

_______________________

Hello Jonathan,

On Thu, 20 Mar 2003, you wrote:

> Hi,
>
> I try to use the RewriteRule. I want to translate, for example:
>
> http://www.mydomain.com/new/articles/2_5.html
>
> to
>
> http://www.mydomain.com/new/articles/index.html?n=2
>
> I use this:
> RewriteRule ^/new/articles/([0-9]*)_([0-9]*).html /new/articles/index.html?n=$1&t=$2
>
> And it does not work. I got:
> The requested URL /new/articles/2_5.html was not found on this server.
>
> Can you help me? Thanks!
> John.

We are actually going to stop supporting modrewrite in the near the future. While it is working though unfortunately your request is beyond the scope of what we offer here for support. We can not help write your rules for you. If the rules are messed up though and the server ends up freaking out because of them your site will be disabled. Basically you should not use modrewrite unless you are really super sure of what you are doing and that you are extremely careful. We have had major issues with modrewrite which is why we are going to no longer support it soon.
Sorry to break this news to you.

If you have any further questions please let me know and I'll be happy to help.

Thanks!
Ralph
 
H
hetzeld
Guest
John,

C'est compréhensible... malheureusement. :oops:
La réécriture d'URL permet le meilleur comme le pire, cela dépend du niveau de maîtrise de celui qui écrit les règles.
On ne devrait jamais essayer une règle sur un serveur en production. Toutes les règles devraient être écrites et testées en local avant d'être poussées sur un serveur web.
Les webmasters ont un peu trop facilement tendance à oublier cela.

Malheureusement, trop d'utilisateurs font des "tentatives" sur un serveur mutualisé et peuvent de ce fait mettre en péril les autres sites hébergés.
Je crois sincèrement que si j'étais hébereur, je permettrais l'utilisaton de mod_rewrite mais réagirais de même en cas de problème.

Dan

ps: il existe suffisamment d'hébergeurs qui le supportent pour que ce ne soit pas un réel problème d'en changer.
 
Nouveau WRInaute
John a dit:
Désolé de crier comme ça mais ça fait 2H que je suis dessus, alors je viens vous supplier de l'aide.

J'ai testé l'UR chez mon hebergeur avec un truc tout simple:
Code:
RewriteRule /* https://www.google.com

Ça fonctionne. Donc le problème ne vient pas de mon hébergeur.
Voiçi mon URL de base:
http://www.mondomaine.com/new/articles/2_5.html
Qui doit se transformer en:
http://www.mondomaine.com/new/articles/?n=2&t=5

J'utilise donc ça:
Code:
Options +FollowSymlinks 
RewriteEngine on
RewriteRule ^/new/articles/([0-9]*)_([0-9]*)\.html /new/articles/?n=$1&t=$2 [NC,L]

Le fichier cible est index.html, le fichier par défaut, donc pas la peine de le préciser dans la rule je suppose.
Eh ben ça fonctionne pas! Il me dit "/new/articles/2_5.html was not found "
Où est le problème?? Merci!


Bonjour,

J'ai un peu ce problème sauf qu'en essayant les différentes modifications dans le .htaccess donné ici, rien ne change.

J'ai aussi essayé de faire :
Code:
RewriteRule /* https://www.google.com
et ça fonctionne très bien.

Après quand j'essaye ceci :
- Fichiers .htaccess + test.html dans le même dossier.

Code:
Options +FollowSymlinks 
RewriteEngine on
RewriteRule ^rewriting\.html$  test.html  [L]

puis que j'accède à rewriting.html il m'affiche cette page d'erreur :
Code:
Not Found
The requested URL /home/xxx/www/xxx/test/test.html was not found on this server.

Pourtant le chemin est bon...

Merci. :D
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut