script mod_rewrite tout bête

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Thomas
Varan
Messages : 1907
Inscription : 07 janv. 2004, 17:29

script mod_rewrite tout bête

Message 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 ;)
Dernière modification par Thomas le 31 août 2005, 17:24, modifié 1 fois.
Anciennement Toto.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message 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").
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Thomas
Varan
Messages : 1907
Inscription : 07 janv. 2004, 17:29

Message par Thomas »

Oui mais non. A terme le script aura son nom de domaine donc pas de sous-dossier "config" :|
Anciennement Toto.
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message 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]
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Thomas
Varan
Messages : 1907
Inscription : 07 janv. 2004, 17:29

Message 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]
Anciennement Toto.
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message 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'];
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Thomas
Varan
Messages : 1907
Inscription : 07 janv. 2004, 17:29

Message 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...
Anciennement Toto.
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Fais voir toutes les règles de réécriture présentes dans le htaccess
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Thomas
Varan
Messages : 1907
Inscription : 07 janv. 2004, 17:29

Message 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 :|
Anciennement Toto.
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Essaie donc avec : RewriteRule ^.*$ index.php [L]
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Thomas
Varan
Messages : 1907
Inscription : 07 janv. 2004, 17:29

Message 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
Anciennement Toto.
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Ok mais après, comment gères-tu la présence de /plop dans l’URL dans ton fichier index.php ?
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Thomas
Varan
Messages : 1907
Inscription : 07 janv. 2004, 17:29

Message 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...
Anciennement Toto.
Thomas
Varan
Messages : 1907
Inscription : 07 janv. 2004, 17:29

Message 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
Anciennement Toto.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message 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
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité