IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

[URL Rewriting] Problème mod_rewrite sur permière connexion


Sujet :

Apache

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [URL Rewriting] Problème mod_rewrite sur permière connexion
    Bonjour à tous.

    Sur un serveur Debian Etch-Apache2.2.3, j' ai fait des redirections via le .htaccess comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteEngine On
    RewriteBase /mondomaine/
    ErrorDocument 404 /mondomaine/index.php?option=com_404
     
    RewriteRule ^((fr|de|en)\/(.*\.html)?)$ index.php?$1 [L,NC]
    Ca renvoie les adresses du genre :

    /mondomaine/fr/shop/article1.html

    vers
    /mondomaine/index.php?fr/shop/article1.html (correction)

    La transformation réelle des paramètres se fait en php

    Tout marche à peu près bien sauf que ...

    Lors de ma première connexion , je ne peux pas accéder qu'au seules pages :
    1. /mondomaine/
    2. /mondomaine/fr/ (ou ../en/ ou ../de)


    Si j'éssaye d'accéder à une adresse genre /mondomaine/fr/shop/details_order-13.html

    J'obtiens sous firefox :
    Redirection de page incorrecte
    Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas.
    # La cause de ce problème peut être la désactivation ou le refus
    des cookies.
    Dans le fichier access.log ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    192.168.1.1 - - [11/Mar/2008:11:29:50 +0100] "GET /mondomaine/fr/shop/details_order-13.html HTTP/1.1" 401 561 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12"
    192.168.1.1 - mondomaine [11/Mar/2008:11:30:04 +0100] "GET /mondomaine/fr/shop/details_order-13.html HTTP/1.1" 301 26 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12"
    La 2ème ligne se répète 20 fois puis firefox plante. Sous IE, cela ne s'arrête que si l'on clique sur X (annuler)


    A noter qu'une fois cette première connexion effectuée, le reste des adresses marche parfaitement même dans une autre fenêtre/onglet.
    Par contre, un fois un bon moment passé sans naviguer sur le site, le problème réapparait si l'on réessaye de suivre un lien ou rafraîchir la page courante.

    Quelqu'un aurait il une idée sur l'origine de cette erreur ?

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Citation Envoyé par day811 Voir le message
    Ca renvoie les adresses du genre :
    /mondomaine/fr/shop/article1.html
    vers
    /mondomaine/index.php?shop/article1.html
    Je suis pas certain que /mondomaine/index.php?shop/article1.html soit correct en tant qu'URL.
    Tu devrais plutôt faire pointer sur /mondomaine/index.php?shop=article1.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(fr|de|en)/((.*\.html)?)$ index.php?$1=$2 [L,NC]

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Je n'arrive pas à trouver la syntaxe de la chaine query_string

    d-Rek, la modification que tu proposes m'oblige à tout refaire mon passage de paramètres.
    Quelqu'un pourrait-il confirmer que la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /mondomaine/index.php?fr/shop/article1.html
    n'est pas correct.

    Les logs de mod_rewrite bouclent sur la séquence suivante :
    192.168.1.1 - mondomaine [12/Mar/2008:10:12:46 +0100] [test.aude-line.com/sid#6718d8][rid#8cae38/initial] (3) [perdir /var/www/mondomaine/] add path info postfix: /var/www/mondomaine/fr -> /var/www/mondomaine/fr/shop/order_details-10.html
    192.168.1.1 - mondomaine [12/Mar/2008:10:12:46 +0100] [test.aude-line.com/sid#6718d8][rid#8cae38/initial] (3) [perdir /var/www/mondomaine/] strip per-dir prefix: /var/www/mondomaine/fr/shop/order_details-10.html -> fr/shop/order_details-10.html
    192.168.1.1 - mondomaine [12/Mar/2008:10:12:46 +0100] [test.aude-line.com/sid#6718d8][rid#8cae38/initial] (3) [perdir /var/www/mondomaine/] applying pattern '^((fr|de|en)\/(.*\.html)?)$' to uri 'fr/shop/order_details-10.html'
    192.168.1.1 - mondomaine [12/Mar/2008:10:12:46 +0100] [test.aude-line.com/sid#6718d8][rid#8cae38/initial] (2) [perdir /var/www/mondomaine/] rewrite 'fr/shop/order_details-10.html' -> 'index.php?fr/shop/order_details-10.html'
    192.168.1.1 - mondomaine [12/Mar/2008:10:12:46 +0100] [test.aude-line.com/sid#6718d8][rid#8cae38/initial] (3) split uri=index.php?fr/shop/order_details-10.html -> uri=index.php, args=fr/shop/order_details-10.html
    192.168.1.1 - mondomaine [12/Mar/2008:10:12:46 +0100] [test.aude-line.com/sid#6718d8][rid#8cae38/initial] (3) [perdir /var/www/mondomaine/] add per-dir prefix: index.php -> /var/www/mondomaine/index.php
    192.168.1.1 - mondomaine [12/Mar/2008:10:12:46 +0100] [test.aude-line.com/sid#6718d8][rid#8cae38/initial] (2) [perdir /var/www/mondomaine/] trying to replace prefix /var/www/mondomaine/ with /mondomaine/
    192.168.1.1 - mondomaine [12/Mar/2008:10:12:46 +0100] [test.aude-line.com/sid#6718d8][rid#8cae38/initial] (1) [perdir /var/www/mondomaine/] internal redirect with /mondomaine/index.php [INTERNAL REDIRECT]
    192.168.1.1 - mondomaine [12/Mar/2008:10:12:46 +0100] [test.aude-line.com/sid#6718d8][rid#8d5e18/initial/redir#1] (3) [perdir /var/www/mondomaine/] strip per-dir prefix: /var/www/mondomaine/index.php -> index.php
    192.168.1.1 - mondomaine [12/Mar/2008:10:12:46 +0100] [test.aude-line.com/sid#6718d8][rid#8d5e18/initial/redir#1] (3) [perdir /var/www/mondomaine/] applying pattern '^((fr|de|en)\/(.*\.html)?)$' to uri 'index.php'
    192.168.1.1 - mondomaine [12/Mar/2008:10:12:46 +0100] [test.aude-line.com/sid#6718d8][rid#8d5e18/initial/redir#1] (1) [perdir /var/www/mondomaine/] pass through /var/www/mondomaine/index.php

  4. #4
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Ouép vu qu'il n'y a pas de symbole égal, la chaine "fr/shop/article1.html" correspond au nom d'une variable GET.
    La question est : Est-ce qu'un nom d'une variable GET peut contenir des points et/ou des slashs ?

    Edit : oui, apparament. Donc je sèche.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    d-Rek,

    J'ai essayé tout de même de remplacer les "/" par des "," et le problème reste identique. (marche tout le temps sauf première connexion)
    Dans mon traitement, je travaille directement sur $_SERVER['QUERY_STRING']
    et je redéfinis les variables get et post manuellement et ensuite je réécris la chaine $_SERVER['QUERY_STRING'].
    Donc le nom des variables post ou get est peu important.

    Les logs indiquent clairement que la réécriture de l'adresse à fonctionné.

    Merci de ton aide, je vais chercher tout de même dans cette direction

  6. #6
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Qu'appelles-tu "première connexion" ?

    Bon courage
    Tiens nous éventuellement au courant

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Première connexion : difficile de donner un définition mais en gros,
    si je démarre FF ou IE et que j'essaie un lien ça ne marche pas.
    Si dans un premier temps, je vais d'abord en page d'accueil, cela fonctionne.
    Toutefois, au bout d'un certain temps que je n'ai pas mesuré exactement, si une fenêtre est ouverte sur le site et que je veux rafraîchir ou aller sur un lien complexe, le problème recommence, alors que si je clique sur page d'accueil, cela fonctionne.

    Le problème est que j'envoie aux clients dans des emails des liens vers le détail d'une commande , et forcément ça bugge.

    Etonnament, les logs du mod_rewrite quand cela fonctionne, sont identiques à celles quand cela ne marche pas, hormis le fait qu'elles ne bouclent pas
    192.168.1.1 - mondomaine [12/Mar/2008:10:48:03 +0100] [test.aude-line.com/sid#6718d8][rid#8cee58/initial] (3) [perdir /var/www/mondomaine/] add path info postfix: /var/www/mondomaine/fr -> /var/www/mondomaine/fr/shop/order_details-10.html
    192.168.1.1 - mondomaine [12/Mar/2008:10:48:03 +0100] [test.aude-line.com/sid#6718d8][rid#8cee58/initial] (3) [perdir /var/www/mondomaine/] strip per-dir prefix: /var/www/mondomaine/fr/shop/order_details-10.html -> fr/shop/order_details-10.html
    192.168.1.1 - mondomaine [12/Mar/2008:10:48:03 +0100] [test.aude-line.com/sid#6718d8][rid#8cee58/initial] (3) [perdir /var/www/mondomaine/] applying pattern '^((fr|de|en)\/(.*\.html)?)$' to uri 'fr/shop/order_details-10.html'
    192.168.1.1 - mondomaine [12/Mar/2008:10:48:03 +0100] [test.aude-line.com/sid#6718d8][rid#8cee58/initial] (2) [perdir /var/www/mondomaine/] rewrite 'fr/shop/order_details-10.html' -> 'index.php?fr/shop/order_details-10.html'
    192.168.1.1 - mondomaine [12/Mar/2008:10:48:03 +0100] [test.aude-line.com/sid#6718d8][rid#8cee58/initial] (3) split uri=index.php?fr/shop/order_details-10.html -> uri=index.php, args=fr/shop/order_details-10.html
    192.168.1.1 - mondomaine [12/Mar/2008:10:48:03 +0100] [test.aude-line.com/sid#6718d8][rid#8cee58/initial] (3) [perdir /var/www/mondomaine/] add per-dir prefix: index.php -> /var/www/mondomaine/index.php
    192.168.1.1 - mondomaine [12/Mar/2008:10:48:03 +0100] [test.aude-line.com/sid#6718d8][rid#8cee58/initial] (2) [perdir /var/www/mondomaine/] trying to replace prefix /var/www/mondomaine/ with /mondomaine/
    192.168.1.1 - mondomaine [12/Mar/2008:10:48:03 +0100] [test.aude-line.com/sid#6718d8][rid#8cee58/initial] (1) [perdir /var/www/mondomaine/] internal redirect with /mondomaine/index.php [INTERNAL REDIRECT]
    192.168.1.1 - mondomaine [12/Mar/2008:10:48:03 +0100] [test.aude-line.com/sid#6718d8][rid#8d3e08/initial/redir#1] (3) [perdir /var/www/mondomaine/] strip per-dir prefix: /var/www/mondomaine/index.php -> index.php
    192.168.1.1 - mondomaine [12/Mar/2008:10:48:03 +0100] [test.aude-line.com/sid#6718d8][rid#8d3e08/initial/redir#1] (3) [perdir /var/www/mondomaine/] applying pattern '^((fr|de|en)\/(.*\.html)?)$' to uri 'index.php'
    192.168.1.1 - mondomaine [12/Mar/2008:10:48:03 +0100] [test.aude-line.com/sid#6718d8][rid#8d3e08/initial/redir#1] (1) [perdir /var/www/mondomaine/] pass through /var/www/mondomaine/index.php

  8. #8
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Dernier test, après je passe la main car je n'ai plus aucun idée du pourquoi du comment.. Je te propose donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Options +FollowSymlinks
    RewriteEngine On
    #RewriteBase /mondomaine/
    ErrorDocument 404 /index.php?option=com_404
     
    RewriteRule ^((fr|de|en)\\/(.*\\.html)?)$ index.php?$1 [L,NC]

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    J'ai la confirmation de quelqu'un de très pointu sur le rewrite et la syntaxe correct (par rapport au \) est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^((fr|de|en)/(.*\.html)?)$ index.php?$1 [L,NC]
    Le / ne doit pas être echappé (la syntaxe rewrite n'est pas identique aux regexp)
    Un seul \ avant le . suffit

    Par contre, j'ai toujours pas la soluce mais je signale quand j'ai trouvé

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Ok, problème résolu.

    Un composant de mon site testait à la première connexion, la possibilité de mettre des cookies en posant un cookie, redirection 301 vers une nouvelle URL et relecture du cookie.
    Malheureusement, je ne gérais pas cette nouvelle URL dans mon script de rewrite et redirigeait vers la même URL.
    D'où le bouclage ...
    (Contexte : Joomla + VM)
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [URL Rewriting] problème sur une règle
    Par Mike91 dans le forum Apache
    Réponses: 1
    Dernier message: 13/09/2007, 16h20
  2. Réponses: 3
    Dernier message: 31/07/2007, 16h40
  3. URL Rewriting problème de regexp ?
    Par pierrickg dans le forum Apache
    Réponses: 2
    Dernier message: 10/07/2007, 13h35
  4. [URL Rewriting] Problème URL Rewriting -> CSS
    Par Cartman.inc dans le forum Apache
    Réponses: 8
    Dernier message: 23/04/2007, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo