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 :
ç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 ? :
Publié : 31 août 2005, 18:17
par Bobe
Fais d'abord un test simple pour voir:
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