UR me rajoute étrangement 2 fois mes sous-répertoire ?!

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

NeoKoD
Nouveau WRInaute
 
Messages: 11
Inscription: Sam Déc 13, 2003 1:03

UR me rajoute étrangement 2 fois mes sous-répertoire ?!

Message le Dim Déc 14, 2003 11:30

Bonjour,

Après quelques essais laborieux avec l'UR ( pourtant j'utilise des regex fréquemment au travail ! ) j'aimerais tout rediriger vers un fichier php afin dans un premier temps de mieux débugguer mes rédirections.

Voila le principe :

Cas n°1 :
http://annonces.site.com
=> http://site.com/annonces/

Cas n°2 :
http://annonces.site.com/moto/
=> http://site.com/annonces/moto/

Cas n°3
http://annonces.site.com/moto/neuf/
=> http://site.com/annonces/moto/neuf/

J'ai fait donc une expression vraiment simpliste qui catche le sous-domaine ($1) et la ressource demandé ( ce qui suit le ".com" dans $2 ) :

Code: Tout sélectionner
RewriteCond     %{HTTP_HOST}        !^site\.                         
RewriteCond     %{HTTP_HOST}        !^www\.site\.
RewriteCond     %{HTTP_HOST}        ^[^.]+\.site\.
RewriteRule     ^(.+)$              %{HTTP_HOST}/$1
RewriteRule     ^([^.]+)\.site\.com(.*)$  http://site.com/go.php?s=$1&rs=$2 [L]


Ca marche pour les 2 premiers cas mais pas le 3eme.
Voici les résultats ( ce qui apparait dans l'url ) :

Cas n°1 :
http://annonces.site.com
=> http://site.com/go.php?s=annonces&rs=/index.php
donc ici c'est bon ( quoi je comprend pas pourquoi il ajoute index.php alors que je ne l'ai pas saisie explicitement et qu'il ne le fait pas pour les 2 cas suivant .. )

Cas n°2 :
http://annonces.site.com/moto/
=> http://site.com/go.php?s=annonces&rs=/moto//
la c'est presque bon, je vois pas pourquoi il ajoute un / supplémentaire ?!

Cas n°3
http://annonces.site.com/moto/neuf/
=> http://site.com/go.php?s=annonces&rs=/moto/neuf/neuf/
alors la j'comprend plus rien !

Qu'est-ce que j'ai fait qui pourrait faire ces doublons ( '/' dans le cas n°2 et le 'neuf/' dans le cas n°3 ) ?

Je me suis dis qu'il devait peut-être repasser une seconde fois dans le .htaccess mais pourtant j'ai mis 2/3 régles pour pas qu'il y passe s'il n'a pas de nom de sous-domaine ( ou qu'il s'agit de 'www' ).

Merci de votre aide ..

nikoshr
WRInaute impliqué
WRInaute impliqué
 
Messages: 320
Inscription: Jeu Juil 10, 2003 5:49

Message le Dim Déc 14, 2003 13:33

Apparemment, le problème viendrait d'un bug d'Apache : http://archive.apache.org/gnats/7879 où, dans certains conditions et à partir d'une réécriture dans un .htaccess, une partie du chemin est ajoutée.

Voilà ce que me racontent mes logs
Code: Tout sélectionner
RewriteCond: input='h1.site.com' pattern='!^site\.' => matched
RewriteCond: input='h1.site.com' pattern='!^h2\.site\.' => matched
RewriteCond: input='h1.site.com' pattern='^[^.]+\.site\.' => matched
[per-dir ~/h1/] rewrite moto/neuf -> h1.site.com/moto/neuf
[per-dir ~/h1/] add per-dir prefix: h1.site.com/moto/neuf -> ~/h1/h1.site.com/moto/neuf

[per-dir ~/h1/] add path info postfix: ~/h1/h1.site.com/moto/neuf -> ~/h1/h1.site.com/moto/neuf/neuf

[per-dir ~/h1/] strip per-dir prefix: ~/h1/h1.site.com/moto/neuf/neuf -> h1.site.com/moto/neuf/neuf
[per-dir ~/h1/] applying pattern '^([^.]+)\.arrakeen\.net(.*)$' to uri 'h1.site.com/moto/neuf/neuf'
[per-dir ~/h1/] rewrite h1.site.com/moto/neuf/neuf -> http://h2.site.com/dyn/ok.php?s=h1&rs=/moto/neuf/neuf


La ligne importante là-dedans étant add path info postfix qui ne devrait pas être là. J'ai bien peur que la solution soit de passer tout ca dans un httpd.conf, si c'est possible, soit de bricoler les règles de réécriture pour virer le chemin dupliqué.

NeoKoD
Nouveau WRInaute
 
Messages: 11
Inscription: Sam Déc 13, 2003 1:03

Message le Dim Déc 14, 2003 13:54

Hummm.. je veux bien penser qu'il s'agisse d'un bug dans RewriteURL mais le l'annonce de la correction du bug date de 2001 ( State: closed ).
Et puis je tourne sur la derniere version de la branche 1.3 d'Apache (packet debian officiel).

Le mieux serait donc de faire un une ristourne pour virer ça directement dans le .htaccess puisque je n'aurais pas accès au httpd.conf

Si quelqu'un a une idée pour virer ces doublons ? sinon j'vais le faire directement en php ça sera peut-être plus simple.

En tout cas je te remercie beaucoup de t'être penché sur mon problème.

NeoKoD
Nouveau WRInaute
 
Messages: 11
Inscription: Sam Déc 13, 2003 1:03

Message le Dim Déc 14, 2003 13:59

A non c'est fixé dans la branche 2.0 :)
This may not be fixed in 1.3.x, but it is fixed in 2.0.30

Donc c'est un vieux bug mais il pouvait apparement pas patché la branche 1.3 :'(

nikoshr
WRInaute impliqué
WRInaute impliqué
 
Messages: 320
Inscription: Jeu Juil 10, 2003 5:49

Message le Dim Déc 14, 2003 14:04

Dans le cas que tu proposes, il y a une solution simple

Code: Tout sélectionner
RewriteCond     %{HTTP_HOST}        !^site\.                         
RewriteCond     %{HTTP_HOST}        !^www\.site\.
RewriteCond     %{HTTP_HOST}        ^[^.]+\.site\.
RewriteRule     ^(.+)$              %{HTTP_HOST}/$1
RewriteRule     ^([^.]+)\.site\.com.*$  http://site.com/go.php?s=$1&rs=%{REQUEST_URI} [R]


Mais ca ne va pas t'aider si tu veux faire autre chose avec l'URL.

Ou alors

Code: Tout sélectionner
RewriteCond     %{HTTP_HOST}        !^site\.                         
RewriteCond     %{HTTP_HOST}        !^www\.site\.
RewriteCond     %{HTTP_HOST}        ^[^.]+\.site\.
RewriteRule     ^(.+)$              %{HTTP_HOST}/$1
RewriteRule     ^([^.]+)\.site\.com(\/.*)\/[^\/]*$  http://site.com/go.php?s=$1&rs=$2 [R]


en espérant que ca ne laisse pas passer un cas particulier

NeoKoD
Nouveau WRInaute
 
Messages: 11
Inscription: Sam Déc 13, 2003 1:03

Message le Dim Déc 14, 2003 15:06

Excellente idée !
Ca marche parfaitement :)

Merci vraiment pour ton aide !

sepang
WRInaute discret
WRInaute discret
 
Messages: 88
Inscription: Dim Jan 26, 2003 12:37

Message le Sam Déc 18, 2004 21:03

Désolé de faire remonter ce vieux topic, mais j'ai tenté d'appliquer le même systeme pour avoir une redirection du genre

nimportequoi.monsite.com
devienne
www.monsite.com/?$1

Ca donne ca

RewriteCond %{HTTP_HOST} !^site\.
RewriteCond %{HTTP_HOST} !^www\.site\.
RewriteCond %{HTTP_HOST} ^[^.]+\.site\.
RewriteRule ^([^.]+)\.site\.com$ http://www.site.com/?$1 [QSA,L,R=301]

Mais mon problème concerne les DNS. Le sous domaine n'étant pas forcément déclaré dans Bind, il me renvoie une erreur 500.
Y'a t-il un moyen de déclarer tous les sous domaines du sites dans le fichier bind?

En bref, comment avez vous fait?

Merci d'avance

A+
Sepang


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

  • Calculer l'indice de densité
    Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page.
  • Ancienneté d'un site dans Google
    Cet outil vous permet de connaître une estimation de l'ancienneté d'un site : il fournit la date à laquelle Google l'a indexé la première fois (et la même chose pour archive.org).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités