Journal Rewrite Rule

Posté par  .
Étiquettes : aucune
0
12
avr.
2004
Bonjour cher journal,

je developpe un site internet, et j'ai pris la decision, récement, d'utiliser SPIP.

J'ai donc decidé de créer cette arborescence :

/
-> spip/

le repertoire spip contient, comme son nom l'indique, les fichiers du projet SPIP.

j'aimerais que toutes URL appelant un fichier à la racine soit redirigé vers le répertoire SPIP.

exemple : http://www.mondomaine.com/mon_rep/ma_page.html(...)
devient : http://www.mondomaine.com/spip/mon_rep/ma_page.html(...)

mais je ne veux pas que la nouvelle URL apparaisse dans la barre d'adresse du navigateur. Pour le visiteur, ça doit être transparent. En effet, je prefere que le visiteur voit un truc du genre :

http://www.mondomaine.com/association/sport/handball.html(...)

en realite, cela fera appel à :
http://www.mondomaine.com/spip/association/sport/handball.html(...)

le repertoire spip contiendra lui aussi un .htaccess qui redirigera vers /spip/article.php3?article=56 (par exemple)
Mais ce .htaccess je l'ai deja.

J'ai essaye des RewriteRule, des Redirect etc... mais rien ne marche.

Si vous avez des pistes, je suis preneur.

Merci.
  • # Re: Rewrite Rule

    Posté par  (site web personnel) . Évalué à 1.

    Pour simplement ajouter le /spip/ au début du chemin des URL, j'aurais vu un .htaccess de ce genre :
    RewriteEngine on
    RewriteRule ^(spip/.*)$     $1
    RewriteRule ^(.*)$            spip/$1
    
    Je précise immédiatement que je n'ai pas testé, et que ça ne sort que de mes maigres connaissances en mod_rewrite.
    • [^] # Re: Rewrite Rule

      Posté par  . Évalué à 1.

      J'avais à peu près crée ce genre de regles (la ligne 2 en moins) et j'ai une belle erreur 500
      Internal Server Error

      en regardant dans les log de apache, j'ai :
      mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.

      J'ai essaye de mettre le flag [L] sur la derniere ligne mais ça ne change rien
      • [^] # Re: Rewrite Rule

        Posté par  (site web personnel) . Évalué à 1.

        Je suis justement en train de faire des essais avec Wordpress, qui me dit de mettre [QSA] à la fin de la règle... Et justement avec ça j'ai le comportement que tu souhaites apparement. :-)
      • [^] # Re: Rewrite Rule

        Posté par  (site web personnel) . Évalué à 7.

        Bon, OK, j'ai trouvé :)

        RewriteCond %{REQUEST_URI} !^/spip.*
        RewriteRule ^(.*)$ /spip/$1 [L]

        devrait faire l'affaire.
        • [^] # Re: Rewrite Rule

          Posté par  . Évalué à 1.

          Impeccable, ça marche exactement comme il faut.

          Merci.
          ---> et hop : +1 :-)
      • [^] # Re: Rewrite Rule

        Posté par  . Évalué à 1.

        j'ai lu dans la doc de mod_rewrite dernièrement que faire du rewrite dans un .htaccess tenais de la grande bidouille digne de macgyver.
        Apparemment, d'après ce que j'ai compris, mod_rewrite repasse toutes les rules du .htaccess tant qu'il y a quelque chose qui match, [L] ou pas, il s'en br*nle, d'ou le maximum redirection reached.
        voila.

        http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html#Internal(...) pour plus d'infos

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.