2011-05-16 7 views
0

Ceci est le contenu de mon fichier .htaccess:RewriteRule ne fonctionne pas

RewriteEngine on 
RewriteRule ^upload$ upload.php 
RewriteRule ^/(\d+)/?.*$ /view.php?id=$1 [L] 

La première règle fonctionne avec succès. Lorsque je navigue vers http://localhost/upload, il affiche la page upload.php.

Toutefois, la deuxième règle ne s'applique pas. Lorsque je navigue sur: http://localhost/1234/some-string, j'obtiens une erreur 404. Il est destiné à montrer cette page: http://localhost/view.php?id=1234.

J'espère que vous pouvez voir ce que j'essaie de faire avec la règle, je veux que la dernière chaîne à la fin de l'URL soit complètement ignorée, et prenez le 1234 comme paramètre pour view.php. Est-ce que quelqu'un peut savoir pourquoi cela ne fonctionne pas?

J'ai essayé tout ce que je peux penser, mais sans succès. Merci!

Répondre

1

il va essayer de trouver le répertoire /1234/ et échouer. changer le / à un - et il devrait fonctionner

EDIT: a complètement faux que ... il est en fait que vous avez un / au début de votre modèle, alors que mod_rewrite reçoit le chemin sans la première barre oblique.

+0

Edit: désolé, je me suis trompé. Tu as raison. Cela fonctionne si je le fais à la place: 'RewriteRule^(\ d +) /?.*$ /view.php?id=$1 [L]'. Je ne sais pas exactement ce que vous vouliez dire par le '-'. – Josh

+0

c'est parce qu'il cherche d'abord les répertoires, je ne sais pas comment l'arrêter. La première fonctionne parce que l'URL ne se termine pas par un '/' (cela ne fonctionnerait pas dans ce cas, car la règle ne spécifie pas cette éventualité. – fbstj

Questions connexes