8791 sujets

Développement web côté serveur, CMS

Bonjour,

je suis en train de mettre en place un .htaccess me permettant de ré-écrire les URLs de mon site, seulement je n'ai pas bien compris tout le fonctionnement de ce module. Smiley confus

Voici le descriptif exact des conditions de ré-écriture que je souhaite mettre en place:

-> filtrage de toutes les URL sauf celles qui permettent d'accéder à mes images(Application/images), à mes feuilles de style(Application/style), à mon index(index.php), et à mon favicon(favicon.ico).

-> toutes les URL qui ne sont pas de la forme www.monsite.fr/monParametre1/monParametre2/ (slash final facultatif) doivent être ré-écrites en:
index.php/monParametre/index

-> si l'url est www.monsite.fr/ (slash final facultatif), l'URL doit être ré-écrite en:
index.php/accueil/index

Voici ce que j'ai écrit pour le moment, mais ce n'est malheureusement pas complet... Smiley bawling

RewriteCond $1 !^(index\.php|Application/images|Application/style|favicon.ico)
RewriteRule ^(.*)$ index.php/$1 [L]

Je vous remercie pour l'aide que vous pourrez m'apporter. Smiley biggrin

PS: une adresse de bon tutoriel serait super car je n'ai rien trouvé qui puisse me permettre d'apprendre à faire ce genre de ré-écriture complexe.
Modifié par Dark$hadow (21 Apr 2009 - 00:19)
Bon je viens de passer la journée à essayer de configurer ça mais j'ai encore quelques petites questions...

Voici le .htaccess auquel je suis arrivé et qui semble fonctionner:

Options +FollowSymlinks

RewriteEngine on

RewriteBase /mvc/

RewriteCond $1 ^$
RewriteRule ^(.*)$ index.php [L]

# Si on ne charge ni une image, ni une feuille de style, ni le favicon
RewriteCond $1 !^(index\.php|Application/images|Application/style|favicon.ico)
# Si l'url ne contient pas au moins deux parties séparées par un slash
RewriteCond $1 !^(.*/.*)
# Si les 2 règles ci-dessus sont vraies, on rajoute /index à la fin de l'url
# correspondant à la méthode par défaut de la classe.
RewriteRule ^(.*)$ index.php/$1/index [L]

# Si on ne charge ni une image, ni une feuille de style, ni le favicon
RewriteCond $1 !^(index\.php|Application/images|Application/style|favicon.ico)
# Si la règle ci-dessus n'a pas été appliquée, on redirige la requête vers index.php
RewriteRule ^(.*)$ index.php/$1


Cependant je ne comprends pas pourquoi si je retire "index\.php" de mes regex, de manière à éviter que l'utilisateur puisse utiliser taper www.monsite/index.php, mon serveur me retourne un beau "Error 500 - Internal server error".

Merci pour vos aide et vos conseils.