2011-05-16 126 views
0

这是我的.htaccess文件的内容:重写规则不工作

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

第一条规则成功的作品。当我导航到http://localhost/upload时,它显示了upload.php页面。

然而,第二条规则并没有。当我浏览到:http://localhost/1234/some-string我收到404错误。它意在显示此页面:http://localhost/view.php?id=1234

希望你能看到我想要做的规则,我希望网址末尾的最后一个字符串被完全忽略,并将1234作为view.php的参数。

任何人都可以知道为什么这不起作用吗?我尝试了所有我能想到的,但没有成功。谢谢!

回答

1

它将试图找到目录/1234/并失败。改变/-,它应该工作

编辑:得到了完全错误的......它实际上是你有一个/在你的模式的开头,而mod_rewrite的不接收第一个斜杠的路径。

+0

编辑:对不起,错了。你是对的。如果我这样做,它会起作用:'RewriteRule ^(\ d +)/?.*$ /view.php?id=$1 [L]'。不过,不知道'-'的意思。 – Josh 2011-05-16 18:45:16

+0

这是因为它首先查找目录,我不知道如何阻止它这样做。第一个作品是因为url没有以'/'结尾(在这种情况下它也不起作用,因为规则没有指定可能性。 – fbstj 2011-05-16 18:48:00