Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/05/2015, à 21:24

Ambigua

.htaccess ...

Salut !

J'ai un site dont les pages sont chargées en fonction d'un parametre GET..

index.php page de base

index.php?module=truc charge via un include() un ficher index.php dans /truc ( /truc/index.php )

index.php?module=truc&page=machin  charge /truc/machin/index.php
....
Parfois, y'a un parametre du type index.php?module=truc&page=machin&id=23

Je voudrais que via le htaccess quand on appelle "domaine.com/index.php?module=truc&page=machin&id=23" l'URL soit réécrite en domaine.com/truc/machin/?id=23

mais que ça affiche la page index.php?module=truc&page=machin&id=23 ..
Et si on appelle domaine.com/truc/machin/?id=23  ça affiche aussi:D

ça fait 2 jours que je cherche, que je lit des tutos .. mais j'arrive pas .. neutral


A+

Florent

Hors ligne

#2 Le 15/05/2015, à 08:00

bruno

Re : .htaccess ...

Bonjour,

Attention aux failles de type RFI/LFI avec ce type de code ! À tout points de vue il serait préférable de faire du routage d'URL en PHP.

Si tu tiens absolument à faire de la réécriture d'URl avec Apache, il va falloir que tu traite chaque « type d'URL.
Par exemple tu as des URL du type :

/truc qui doivent renvoyer vers /index.php?module=truc

cela pourrait fonctionner avec :

 
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^([[_a-zA-Z0-9-]*)$ index.php?module=$1

https://httpd.apache.org/docs/current/f … write.html
http://www.webrankinfo.com/dossiers/tec … -rewriting
http://www.bases-hacking.org/faille-include.html

Dernière modification par bruno (Le 15/05/2015, à 08:02)

Hors ligne

#3 Le 15/05/2015, à 11:02

tiramiseb

Re : .htaccess ...

Salut,

J'ajoute également que, si tu as accès à la configuration d'Apache, il faut directement l'utiliser et non créer un fichier htpasswd.
Voir explication ici : https://www.maccagnoni.eu/2014/02/apach … -htaccess/

Hors ligne

#4 Le 15/05/2015, à 16:41

Ambigua

Re : .htaccess ...

Salut !

Merci pour ces éclaircissements !!!

Quand je met dans mon .htaccess :

RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^([[_a-zA-Z0-9-]*)$ index.php?module=$1

Ça marche si j'appelle : mondomaine/truc , il affiche bien la page mondomaine/index.php?module=truc

MAIS big_smile si je fait :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([[_a-zA-Z0-9-]*)/([[_a-zA-Z0-9-]*)$ index.php?module=$1&page=$2

Ça ne marche pas ..:( si j'appelle mondomaine/truc , j'ai les données mais pas le style (CSS et JS ) sad neutral

J'ai pas trouvé comme dire "if(y'a un slash dans le REQUEST_FILENAME") rules = index.php?module=$1&page=$2

Et aussi, je voudrais que si on appelle mondomaine/index.php?module=bidule&page=superpage&id=42
ça réécrive l'URL en mondomaine/bidule/superpage/?id=42 ..C'est possible ? hmm


A+

Florent

Hors ligne

#5 Le 15/05/2015, à 17:11

bruno

Re : .htaccess ...

Je réitère mon avertissement pour les failles de sécurité avec ta façon de charger les fichiers php…
Et le conseil de tiramiseb est tout à fait pertinent.

Sinon comme je l'ai dit il faut que tu traites chaque type d'URL, je ne t'ai donné qu'un exemple pour un type d'URL. Tu dois avoir autant de règles de réécritures que de types d'URL.
Cela peut devenir un vrai casse-tête avec les expressions régulières (Apache utilise la même syntaxe que Perl : http://perldoc.perl.org/perlre.html).

 RewriteRule ^([[_a-zA-Z0-9-]*)$ index.php?module=$1
 RewriteRule ^([[_a-zA-Z0-9-]*)/([[_a-zA-Z0-9-]*)$ index.php?module=$1&page=$2

et ainsi de suite pour les autres types qui se terminent par « id=une valeur numérique »

Dernière modification par bruno (Le 15/05/2015, à 17:13)

Hors ligne

#6 Le 15/05/2015, à 20:25

tiramiseb

Re : .htaccess ...

Ça ne marche pas ..:( si j'appelle mondomaine/truc , j'ai les données mais pas le style (CSS et JS )

Et il y a quoi dans les logs ?

Hors ligne

#7 Le 15/05/2015, à 21:41

Ambigua

Re : .htaccess ...

Les logs de ?

En fait, dans le header, j'ai des liens relatifs, il faut mettre des liens en dur du genre

<?php $host = $_SERVER['HTTP_HOST']; ?>
<head>
.....
<link rel="stylesheet" href="http://<?=$host?>/css/jquery-ui.css" />
...
</head>

A+

Florent

Hors ligne

#8 Le 15/05/2015, à 21:45

tiramiseb

Re : .htaccess ...

Les logs d'Apache.

En fait, dans le header, j'ai des liens relatifs

Bien vu, en effet ça peut expliquer.

il faut mettre des liens en dur du genre

Tu peux faire des liens absolus sans mettre la partie "host" : commence par "/" tout simplement smile

Hors ligne

#9 Le 15/05/2015, à 22:19

Ambigua

Re : .htaccess ...

tiramiseb a écrit :

Tu peux faire des liens absolus sans mettre la partie "host" : commence par "/" tout simplement smile

Non hmm ça marche pas .. sauf si je met toute l'URL ( sauf que le site est accessible depuis 2 noms de domaine tongue)
Le host permet de charger dans le ndd

Bon, mon .htaccess fonctionne, MAIS, ça ne me transforme pas (encore big_smile ) les mondomaine/index.php?module=bidule en mondomaine/bidule

Ou bien dois-je faire dans mon index.php un :

if(isset($_GET)) {

header(Location :/$module);
}

Mais ne va t-il pas tourner en rond ?? quand le htaccess va appeller index.php?module=bidule ???


A+

Florent

Hors ligne

#10 Le 15/05/2015, à 22:44

tiramiseb

Re : .htaccess ...

Déjà, arrête de mettre ça dans un .htaccess !!!

Hors ligne

#11 Le 15/05/2015, à 23:16

Ambigua

Re : .htaccess ...

tiramiseb a écrit :

Déjà, arrête de mettre ça dans un .htaccess !!!

De mettre quoi ?? du php  ?? ( je le met pas dans le htaccess, rassure-toi .. avant, j'étais con, mais ça y est, je suis guéri .. ou presque tongue )

N'est ce pas bien d'utiliser les htaccess ??
C'est pas très clair comme prog, mais ça le merite d'être efficace ..non ?


A+

Florent

Hors ligne

#12 Le 15/05/2015, à 23:21

tiramiseb

Re : .htaccess ...

Ambigua a écrit :

N'est ce pas bien d'utiliser les htaccess ??

Non.

Il semble que tu n'as pas lu mon message #3 ci-dessus...

Hors ligne

#13 Le 16/05/2015, à 06:27

Ambigua

Re : .htaccess ...

Si, je l'ai lu, mais je suis sur un mutualisé . et je ne crois pas trop que ce soit un GROS probleme de surcharge .... pas plus que la lecture / execution d'un script php wink


A+

Florent

Hors ligne

#14 Le 16/05/2015, à 14:04

tiramiseb

Re : .htaccess ...

mais je suis sur un mutualisé

Tu aurais dû le dire.
Car là, vu que tu postes dans la section "serveur", moi je pensais que tu avais ton serveur.

je ne crois pas trop que ce soit un GROS probleme de surcharge

De toute façon sur un mutualisé il n'y a pas le choix, l'hébergeur doit accepter la surcharge (ou alors interdire complètement les .htaccess, ce qui serait délirant).

Mais si, quand on a un serveur dédié avec beaucoup de trafic, la surcharge peut se ressentir.

-----------

Non hmm ça marche pas .. sauf si je met toute l'URL

Alors là tu m'étonnes grandement. Si tu nous montrais le machin, on pourrait se faire une idée...

Bon, mon .htaccess fonctionne, MAIS, ça ne me transforme pas (encore big_smile ) les mondomaine/index.php?module=bidule en mondomaine/bidule

Comme bruno te l'a indiqué en #5, il faut une RewriteRule pour chaque cas de figure.

Hors ligne