重写规则不工作
问题描述:
这是我的.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的参数。
任何人都可以知道为什么这不起作用吗?我尝试了所有我能想到的,但没有成功。谢谢!
答
它将试图找到目录/1234/
并失败。改变/
为-
,它应该工作
编辑:得到了完全错误的......它实际上是你有一个/
在你的模式的开头,而mod_rewrite的不接收第一个斜杠的路径。
编辑:对不起,错了。你是对的。如果我这样做,它会起作用:'RewriteRule ^(\ d +)/?.*$ /view.php?id=$1 [L]'。不过,不知道'-'的意思。 – Josh 2011-05-16 18:45:16
这是因为它首先查找目录,我不知道如何阻止它这样做。第一个作品是因为url没有以'/'结尾(在这种情况下它也不起作用,因为规则没有指定可能性。 – fbstj 2011-05-16 18:48:00