Rewrite : monsite.fr/action vers monsite.fr/index.php/action

Nouveau WRInaute
Bonjour à tous,
Je suis face à un problème pour la mise en place d'une application web.
L'application utilise un contrôleur frontale via index.php, seul script public accessible.
Par la suite la route est analyser et contient les paramètres des pages/actions à traiter.

le tout fonctionne parfaitement avec la syntaxe suivante :
http://monsite.fr/index.php/about

l'idée est de pouvoir via le htaccess que les urls écrite sans le index.php pointe forcément sur le script:
http://monsite.fr/about doit pointer sur http://monsite.fr/index.php/about

il faudrait également exclure certains dossier (les ressources js et css par exemple).

il ne faut cependant pas de redirection car l'url ne doit plus jamais contenir la syntaxe avec index.php.

J'ignore si il existe une solution, toutes celles que j'ai pu essayer il y a peut boucle ou n'ajoute pas les paramètres.

Si vous avez des idées ?

Merci d'avance pour votre aide.
 
WRInaute passionné
Slt,
Dans le .htaccess
Code:
RewriteEngine On
RewriteRule ^(.*)$ index.php/$1

C'est pour le cas général.

Pour les css et js, ils sont de quel type avant et après ?
 
Nouveau WRInaute
Merci d'avoir pris le temps de répondre.

Je testerais ton code, cependant cela m'étonne de ne pas y avoir pensé avant.
(mais bon souvent les réponses les plus simples sont les plus dur à trouver ^^)

Pour les css/js et autre ressources le principe est qu'il existe une dossier "public" à la racine.
Dans ce cas une url du type:

http://monsite.fr/public/ ...

doivent être ignoré par la réécriture.

les ressources peuvent être de tout type et le chemin d'accès aussi long que possible.
 
WRInaute accro
Code:
RewriteEngine On
RewriteCond %{REQUEST_URI}  !^(.*)/(dossier1|dossier2|dossier3)/.*
RewriteRule ^(.*)$ index.php/$1
 
Nouveau WRInaute
Test effectué et hélas j'ai une erreur 500.

Pour être sure de mon coup, j'ai écris une simple règle de test. Et cela fonctionne, donc l'url rewriting est bien activé.

par contre au vu de l'écriture un problème va se poser, si on écrit l'url avec l'index.php.
Je pense rajouter une redirection. Cependant il faudrait que ce premier cas fonctionne.
 
WRInaute discret
Si ton htaccess ne doit pas faire de redirection sur tes dossiers en général, tu peux utiliser la manière suivante (qui ignore les dossiers) pour être plus générique:

Code:
RewriteCond 	%{REQUEST_FILENAME} 	!-d
RewriteRule 	^(.*)$ 				index.php/$1 [L]
 
Discussions similaires
Haut