URL Rewriting ou RedirectPermanent ?

WRInaute discret
Bonjour,

Je suis entrain de coder un site multi-langue en PHP, en fait tout passe par le fichier index.php qui reçoit les URL sous la forme suivante :
www.monsite.com/index.php?page=download&lang=fr

Maintenant ce que j'aimerai faire c'est que quand l'utilisateur entre l'URL :
www.monsite.com/fr/download.html

ça redirige vers (ou transforme en) :
www.monsite.com/index.php?page=download&lang=fr

Faut-il pour cela utiliser l'URL Rewriting ou bien le RedirectPermanent ?
sachant que je ne veux pas créer de repertoire spécifique pour chaque langue avec un fichier htaccess dedans, je ne veux utiliser qu'un seul fichier htaccess à la racine du site.

Merci d'avance.
 
WRInaute accro
vu ton url de depart ca va poser probleme car le regex risque de prendre l'ensemble de tes urls. J'ai mis une condition (RewriteCond), pofine la si c'est possible pour toi. Test et dis moi si ca marche. tu peux enlever la condition aussi vue que tu as plusieurs langues.

Code:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/fr/
RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?page=$2&lang=$1 [L]
 
WRInaute discret
Bonjour KOogar,

Merci beaucoup pour ta réponse, ça a l'air de bien marché. J'ai effectivement enlevé la condition pour que ça fonctionne dans toutes les langues, je n'ai plus qu'à modifier le RewriteRule pour que ça renvoi sur la page d'accueil quand l'utilisateur tape :
www.monsite.com/fr/

Encore merci. :)
 
WRInaute discret
me revoila !

Voila mon fichier htaccess final

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/fr/?$
RewriteRule ^(.*)$ /index.php?page=home&lang=fr [L]
RewriteCond %{REQUEST_URI} ^/en/?$
RewriteRule ^(.*)$ /index.php?page=home&lang=en [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?page=$2&lang=$1 [L]

ErrorDocument 404 /index.php?page=error

La tout fonctionne nickel mais c'est peut être pas très optimisé comme script (je suis novice en regex) si vous voyez des trucs à améliorer je suis preneur.
Il y a juste une dernière chose que j'aimerai, c'est quand quelqu'un tente d'accèder à un fichier php sur le serveur, par exemple :
www.monsite.com/download.php
J'aimerai que ça redirige vers ma page d'erreur ErrorDocument, j'ai essayé de mettre ça à la fin mais ça ne fonctionne pas :
RewriteCond %{REQUEST_URI} ^/*.php$
RewriteRule ^(.*)$ /index.php?page=error [L]
 
WRInaute accro
C'est toujours delicat d'interdire aux utilisateurs des pages utilisées pour le fonctionnement du site.
Si tu te fais pomper ton site, le mieux reste de mettre en place 1 anti aspirateur. Si certain utilisateurs spament tes formulaires, le mieux est de mettre en place 1 anti flood.
 
WRInaute discret
Salut kOogar,

Oui en fait ça ne me gène pas qu'on me pompe mon site, et je n'ai pas de formulaire sur mon site alors je n'ai pas besoin d'un anti-flood. Je fait ça pour ne plus que l'utilisateur puisse afficher le contenu d'une page php :

RewriteCond %{REQUEST_URI} ^/home.php$ [OR]
RewriteCond %{REQUEST_URI} ^/screenshots.php$ [OR]
RewriteCond %{REQUEST_URI} ^/download.php$ [OR]
RewriteCond %{REQUEST_URI} ^/support.php$
RewriteRule ^(.*)$ /index.php?page=error [L]

et ainsi de suite pour toutes les pages qui ne doivent pas être affichées, ça fonctionne très bien.
 
WRInaute accro
Si cela te semble neccessaire, pourquoi pas. Une chose est sur, c'est que tu as appris l'utilisation du .htaccess a vitesse grand V :D
 
WRInaute discret
Oui, on peut faire des trucs vraiment sympa avec le htaccess ça me plait bien.
Je vais quand même jeter un oeil sur les combines anti aspirateur dont tu parlais, j'ai vu qu'il y avait quelques articles la dessus sur ce site, ça pourrais me servir pour sécurisé encore plus le site.

Encore merci pour ton aide. :)

a+
 
Discussions similaires
Haut