- Accueil
- » Forum
- » Serveurs
- » .htaccess ...
Pages : 1
#1 Le 14/05/2015, à 20: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 ..
A+
Florent
Hors ligne
#2 Le 15/05/2015, à 07: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, à 07:02)
#3 Le 15/05/2015, à 10: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/
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#4 Le 15/05/2015, à 15: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 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 )
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 ?
A+
Florent
Hors ligne
#5 Le 15/05/2015, à 16: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, à 16:13)
#6 Le 15/05/2015, à 19: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 ?
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#7 Le 15/05/2015, à 20: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, à 20: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
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#9 Le 15/05/2015, à 21:19
- Ambigua
Re : .htaccess ...
Tu peux faire des liens absolus sans mettre la partie "host" : commence par "/" tout simplement
Non ça marche pas .. sauf si je met toute l'URL ( sauf que le site est accessible depuis 2 noms de domaine )
Le host permet de charger dans le ndd
Bon, mon .htaccess fonctionne, MAIS, ça ne me transforme pas (encore ) 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, à 21:44
- tiramiseb
Re : .htaccess ...
Déjà, arrête de mettre ça dans un .htaccess !!!
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#11 Le 15/05/2015, à 22:16
- Ambigua
Re : .htaccess ...
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 )
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, à 22:21
- tiramiseb
Re : .htaccess ...
N'est ce pas bien d'utiliser les htaccess ??
Non.
Il semble que tu n'as pas lu mon message #3 ci-dessus...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#13 Le 16/05/2015, à 05: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
A+
Florent
Hors ligne
#14 Le 16/05/2015, à 13: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.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
Pages : 1