J'utilise le cadre Kohana (mais je pense qu'il est hors de propos pour cette question) et les pages sont accessibles comme siSuppression index.php des URL du site
http://www.example.com/articles/
http://www.example.com/index.php/articles/
Maintenant, en règle générale, je généralement essayez et modifiez mon .htaccess pour n'autoriser qu'une seule entrée dans une page, et redirigez silencieusement d'autres manières communes. En gros, dans la 1ère URL ci-dessus, l'adresse est en réalité redirigée en interne vers le 2ème exemple.
Ce que je veux faire, c'est de forcer les URL du 2ème type à se transformer en URL du premier type. Je ne suis pas souvent confiant dans .htaccess, et ma première tentative est de lancer des résultats inattendus (comme des boucles sans fin à l'occasion)
Voici ce que je suis venu avec
RewriteRule ^index\.php/(.*) $1 [NC,L,R=301]
Quelqu'un peut-il me dire ce que je fais mal, et si vous avez également rencontré ce problème, comment l'avez-vous résolu?
EDIT
J'ai décidé de poster tout mon .htaccess si tous mes réoriente peuvent être examinées.
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /~toberua/
# file not found page
ErrorDocument 404 /404/
ErrorDocument 403 /403/
# get people out of my directories
Options -Indexes
# default page to load
DirectoryIndex index.php
# add trailing slash if missing
RewriteRule ^(([a-z0-9\-]+/)*[a-z0-9\-]+)$ $1/ [NC,R=301,L]
# redirect /favicon.ico requests
RewriteCond %{REQUEST_URI} !^/images/layout/favicon\.ico [NC]
RewriteCond %{REQUEST_URI} favicon\.(gif|ico|png|jpe?g) [NC]
RewriteRule (.*) images/layout/favicon.ico [R=301,L]
# send /home back to TLD
RewriteRule home/ $1 [NC,R=301,L]
# ensure there is no /index.php in the address bar
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/
RewriteRule ^(.*)index\.php$ $1 [R=301,L] # this was my attempt to stop /dir/index.php and make it simply /dir/
RewriteRule ^index\.php/(.*) $1 [NS,NC,L,R=301]
# Protect application and system files from being viewed
RewriteRule ^(application|modules|system) - [F,L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT,L]
Qu'est-ce que NS fait du chaos? – alex
En réponse à votre modification: Pensez-vous que je dois configurer un RewriteCond? J'ai essayé d'ajouter ce drapeau et il est toujours en boucle. Aucune suggestion? +1 pour vos problèmes :) – alex
Je ne pense pas qu'un RewriteCond soit nécessaire ou utile, non. Je ne vois pas pourquoi les boucles se poursuivent sans voir les règles que vous utilisez pour réécrire/articles/to/index.php/articles. – chaos