URL rewriting avec Htaccess qui ne fonctionne pas

WRInaute impliqué
Bonjour,

sur mon site je souhaite transformer les url du type : monsite.com/?page=mapage vers une url comme ceci : monsite.com/mapage.html

J'ai pour cela crée un fichier htaccess que j'ai mis à la racine de mon site avec ceci à l'intérieur :
Code:
Options +FollowSymlinks
 
RewriteEngine On
 
RewriteRule ^([a-zA-Z0-9]*)\.html$   index.php?page=$1 [L]

Malheureusement cela ne fonctionne pas du tout et me ramène en permanence vers une page 404.

Pouvez-vous m'aider ?

Merci d'avance
 
WRInaute accro
Bonjour Sff

"mapage" ne peut contenir que des lettres ou chiffres ?

Les voyelles ne sont jamais accentuées ?

Pas de caractères autres que lettres ou chiffres ?

Si c'est le cas => Problème de regexp.

Respectueusement.
 
WRInaute accro
Bonjour Monsieur

Et... Un + au lieu de * ?

Sinon, problème de serveur web ?

Il faut : "AllowOverride On" dans /etc/httpd/httpd.conf

( Ou dans le fichier de virtual host ).

Respectueusement.
 
WRInaute accro
Bonjour Monsieur

Regarder le log de Apache.

Hostinger mutualisé ?

Au lieu de index.php, mettre toute l'url ?

Respectivement.

Jean François Ortolo
 
WRInaute impliqué
Re: URL rewriting : des mots interdit ?

Bon c'est bon, il semblerait que le problème venait de Hostinger.

Aujourd'hui cela fonctionne avec ce code :
Code:
Options +FollowSymlinks
RewriteEngine On
 
RewriteRule ^([-a-z0-9]*)\.html$  index.php?page=$1 [L]

Mais une chose est bizarre, j'ai veux avoir 2 url comme ceci : privacy-policy.html

et

terms-and-conditions.html

Mais les mots conditions et policy posent problème, pourquoi ?

Si j'utilise polici et condition sans le s cela fonctionne.

Ce sont des mots interdit pour la réecriture d'url ?

Merci d'avance
 
WRInaute accro
Rebond

Toujours la même chose : Il faut un tiret ( - ), à la fin de la regexp ( [ -] )

Et puis boudiou, pourquoi * plutôt que + ?

Respectueusement.
 
WRInaute impliqué
Ok merci beaucoup pour l'aide, en effet c'était le tiret qu'il manquait.

Sinon j'ai une autre question, je souhaite également transformer une url de ce genre ;

monsite.com/?do=fr

en ceci :

fr.monsite.com

J'ai mis ceci dans le htaccess

Code:
RewriteCond %{QUERY_STRING} ^do=([a-z]+)$ 
RewriteRule ^ http://%1.monsite.com [R=301,L]
Cela fonctionne, mais j'ai du coup une adresse de ce genre : fr.monsite.com/?do=fr

Comment supprimer le ?do=fr ?

Merci
 
WRInaute impliqué
Merci beaucoup !

Est ce qu'on peut éviter de mettre monsite.com et faire appel à une autre variable qui ferait la meme chose ?

Merci
 
Discussions similaires
Haut