2010-02-12 11 views
2

J'utilise Mod Rewrite pour supprimer index.php. Je ne veux pas utiliser les requêtes. Je veux que foo.com/bar soit interprété comme foo.com/index.php/bar.Htaccess Réécriture introuvable

Cela fait très bien, mais me donne erreur introuvable. L'URL demandée /home/foo/www/index.php/bar n'a pas été trouvée sur ce serveur.

Pourquoi !!

+0

@Luke, j'ai mis à jour ma réponse. Je pense que je pourrais comprendre ce que vous voulez faire, alors laissez-moi savoir si je l'ai manqué. –

Répondre

0

Mise à jour

Je pense que je viens de comprendre ce que vous voulez faire. Vous voyez, vous pouvez passer des questions dans les coulisses, mais vous ne pouvez pas passer ce que vous suggérez dans les coulisses. Vous devez faire une redirection réelle. Quelque chose comme ça (La partie importante est le R):

RewriteRule ^bar$ index.php/bar [NC,QSA,R] 

Cela force une redirection vers votre page en utilisant le nouveau chemin spécial. Est-ce ce que tu voulais?

Réponse originale

Vous ne pouvez pas passer un chemin vers une page PHP comme ça comme sera interprétée comme faisant partie d'un chemin. Les chances sont, votre fichier est sur une machine Linux/Unix où un répertoire peut être nommé avec un . dedans. Désolé, mais vous devrez utiliser une chaîne de requête:

RewriteBase/
RewriteRule ^bar$ index.php?page=bar [NC,QSA] 

Oumis à jour:

RewriteBase/
RewriteRule ^bar$ index.php?/bar [NC,QSA] 

Je pense aussi les dernières versions de Windows prennent en charge . dans des répertoires aussi bien, mais Je ne suis pas sûr.

+0

Oui, Windows autorisera '.' dans les répertoires. –

+0

Je cherche une approche segmentée, plutôt que par requête. Code Igniter l'utilise, je crois. À moins qu'ils ne soient juste sournois à ce sujet. http://bit.ly/bGdA8n –

+0

@Luke, lisez ce lien entier que vous avez partagé. Vous verrez que leur 'solution en ligne' est en réalité 'index.php?/Bar' qui utilise toujours la chaîne de requête, juste sans nom de variable. –

0

index.php est certainement un fichier, pas un répertoire, à moins que vous (bizarrement) avez un répertoire appelé index.php. Apache se plaint correctement qu'il n'y a pas un tel répertoire.

Vous vouliez probablement faire quelque chose comme index.php?page=bar. Ajustez votre .htaccess en conséquence.

+0

Oh, c'est comme un répertoire? Que puis-je faire si je ne souhaite pas utiliser les requêtes? –