Page 1 sur 2

script mod_rewrite tout bête

Publié : 31 août 2005, 12:01
par Thomas
Bonjour

D'une part, je cherche à ce que tout les liens qui pointent sur http://127.0.0.1/config/
soient redirigé sans que ça se voye (mod_rewrite) vers http://127.0.0.1/config/index.php/

Par exemple :
http://127.0.0.1/config/plop serait en fait http://127.0.0.1/config/index.php/plop

Il y aurai une seule exception :
http://127.0.0.1/config/table-des-matieres qui serait en fait http://127.0.0.1/config/toc/home/toc

Comment faire ?

Pour le deuxième j'ai mis dans le .htaccess situé à http://127.0.0.1/config/ :

Code : Tout sélectionner

RewriteRule   ^index.php/table-des-matieres$   index.php/toc/home/toc [L]
mais ça ne marche pas...

Merci ;)

Publié : 31 août 2005, 12:36
par Benoit
Est-ce que tu peux activer Multiviews (je suppose puisque tu parles de ton serveur perso) ?

Dans ce cas il existe une solution assez simple, tu places une copie conforme de "index.php" à la racine de ton site en l'appelant "config.php". Ainsi, demander http://127.0.0.1/config/ chargera silencieusement http://127.0.0.1/config.php/, et la suite du parsing de l'URL sera assurée par ton script (pour lequel il faudra sans doute corriger le chemin "racine").

Publié : 31 août 2005, 15:19
par Thomas
Oui mais non. A terme le script aura son nom de domaine donc pas de sous-dossier "config" :|

Publié : 31 août 2005, 17:21
par Bobe
Dans ce cas, voilà comment je fais pour mon blog:

Code : Tout sélectionner

RewriteRule ^Styles - [L]
RewriteRule ^Scripts - [L]
RewriteRule ^robots\.txt$ - [L]
# ...autres exceptions éventuelles
RewriteRule ^.*$ index.php [L]

Publié : 31 août 2005, 17:42
par Thomas
Je commence à croire que mon Apache est buggué...

Si je met :

Code : Tout sélectionner

RewriteEngine on
RewriteRule ^.*$ /config/index.php/ [L]
ça me met une "Internal Server Error" pourtant j'ai bien décommenté les lignes en rapport avec le mod_rewrite dans httpd.conf

Je me demande si ce n'est pas la faute a DotClear qui traite les URLs grâce au MultiViews... Mais normalemennt ça arrive après le traitement d'Apache !

Cette règle pourrait être juste ? :

Code : Tout sélectionner

RewriteRule ^(.*)$ /config/index.php/$1 [L]

Publié : 31 août 2005, 18:17
par Bobe
Fais d'abord un test simple pour voir:

Code : Tout sélectionner

RewriteEngine On

RewriteRule ^.*$ test.php
avec test.php faisant echo $_SERVER['REQUEST_URI'];

Publié : 31 août 2005, 18:37
par Thomas
Il me faut bien préciser le RewriteEngine On avant pour que ça marche, et le fichier PHP me donne :
/config/
Je ne sais pas si c'est normal mais quand je tape :
http://127.0.0.1/config/index.php/table-des-matieres la page qui s'affiche est http://127.0.0.1/config/index.php (bien que ce ne soit pas visible dans la barre d'adresse) car DotClear fonctionne comme ça.
http://127.0.0.1/config/index.php/toc/home/toc m'affiche une page spéciale mais sans style car j'ai mis ce code :

Code : Tout sélectionner

<link rel="stylesheet" type="text/css" href="../themes/config/style.css" media="screen" />
donc il cherche la CSS ici : http://127.0.0.1/config/index.php/toc/t ... /style.css alors qu'elle est là : http://127.0.0.1/config/themes/config/style.css
Maintenant si je met cette ligne dansle .htaccess :

Code : Tout sélectionner

#RewriteRule   ^table-des-matieres$   /config/index.php/toc/home/toc  [L]
et que je vais là : http://127.0.0.1/config/table-des-matieres c'est index.php qui s'affiche mais sans style. Illogique...

Publié : 31 août 2005, 18:47
par Bobe
Fais voir toutes les règles de réécriture présentes dans le htaccess

Publié : 31 août 2005, 19:00
par Thomas
Dans le .htaccess situé à ce niveau :
http://127.0.0.1/config/

Il y a :

Code : Tout sélectionner

#RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.4$ 
#RewriteCond %{REQUEST_URI} !^/images 
#RewriteRule .* bientot.html [L]

#RewriteRule   ^(.*)$   /config/index.php/  [L]


RewriteEngine on

#RewriteRule ^rss - [L]
#RewriteRule ^robots\.txt$ - [L]
RewriteRule ^.*$ /config/index.php/ [L]

#RewriteRule   ^table-des-matieres$   /config/index.php/toc/home/toc  [L]
Et j'ai une internal server error :|

Publié : 31 août 2005, 19:21
par Bobe
Essaie donc avec : RewriteRule ^.*$ index.php [L]

Publié : 31 août 2005, 21:17
par Thomas
Bobe a écrit :Essaie donc avec : RewriteRule ^.*$ index.php [L]
Avec ça quoique je fasse je suis effectivement renvoyé sur index.php mais pas sur la page correspondant.

Par exemple, http://127.0.0.1/config/plop m'affiche http://127.0.0.1/config/index.php et non http://127.0.0.1/config/index.php/plop

Publié : 31 août 2005, 23:30
par Bobe
Ok mais après, comment gères-tu la présence de /plop dans l’URL dans ton fichier index.php ?

Publié : 31 août 2005, 23:51
par Thomas
Je sais pas, c'st DotClear qui s'en occupe. Je viens d'avoir une idée d'ailleurs je vais voir dans les options de DotClear...

Publié : 01 sept. 2005, 00:58
par Thomas
ça a l'air de marcher à moitié mais faut m'expliquer un truc.

Quoique je fasse pas de feuilles CSS appliquées.

J'essaye de taper directement :
http://127.0.0.1/config/themes/config/config.css
et j'atterit sur index.php

Alors je rajoute une ligne à mon .htaccess ce qui donne :

Code : Tout sélectionner

RewriteEngine on

RewriteRule ^rss - [L]
RewriteRule ^ecrire - [L]
RewriteRule ^themes - [L]
RewriteRule ^robots\.txt$ - [L]
RewriteRule ^table-des-matieres$  index.php/toc/home/toc  [L]
RewriteRule ^.*$ index.php [L]
Mais ça marche pas... http://127.0.0.1/config/themes/config/config.css renvoie tjs sur index.php alors que http://127.0.0.1/config/themes/config/ ou http://127.0.0.1/config/themes/ ou même http://127.0.0.1/aboutconfig/themes/abo ... g/desc.xml http://127.0.0.1/aboutconfig/themes/abo ... g/page.png s'affichent...

Mais pas la feuille CSS, elle est rewrité :(

Edit : ça le fait avec les .js aussi

Publié : 01 sept. 2005, 10:57
par Benoit
Parce que ce sont des URL relatives probablement et que là tu es décalé d'un niveau.

Franchement, si c'est un dotclear tu ne devrais pas avoir besoin de faire tout ça et la solution la plus simple est bien celle que j'ai donnée au début (utiliser multiviews). Sinon il y a quelques exemples de rewrite ici en fait : http://www.dotclear.net/trac/wiki/DotCl ... learRacine