我正在使用Mod重写删除index.php。我不想使用查询。我想要foo.com/bar被解释为foo.com/index.php/bar。Htaccess重写未找到
它做得很好,但给我未找到错误。在此服务器上未找到请求的URL /home/foo/www/index.php/bar。
为什么!!
我正在使用Mod重写删除index.php。我不想使用查询。我想要foo.com/bar被解释为foo.com/index.php/bar。Htaccess重写未找到
它做得很好,但给我未找到错误。在此服务器上未找到请求的URL /home/foo/www/index.php/bar。
为什么!!
更新
我想我只是想通了,你想要做的事。你看,你可以在幕后传递查询,但你无法通过你在幕后建议的内容。你必须做一个实际的重定向。像这样的东西(最重要的部分是R
):
RewriteRule ^bar$ index.php/bar [NC,QSA,R]
这迫使使用新的特殊的路径重定向到您的网页。那是你想要的吗?
原来的答案
你不可错过的路径那样的PHP页面,因为它将被解释为一个路径的一部分。很可能,您的文件位于Linux/Unix机器上,其中的目录可以用.
命名。很抱歉,但你将不得不使用一个查询字符串:
RewriteBase/
RewriteRule ^bar$ index.php?page=bar [NC,QSA]
或者更新:
RewriteBase/
RewriteRule ^bar$ index.php?/bar [NC,QSA]
我也认为窗口的最后几个版本支持.
在目录中一样好,但我不确定。
是的,Windows将在目录中允许'.'。 – 2010-02-12 03:52:12
我正在寻找一种分段方法,而不是通过查询。 Code Igniter使用它,我相信。除非他们只是偷偷摸摸。 http://bit.ly/bGdA8n – 2010-02-12 04:21:48
@Luke,通读您分享的整个链接。你会看到他们的'在线解决方案'实际上是'index.php?/ bar',它仍然使用查询字符串,只是没有变量名。 – 2010-02-12 04:41:17
index.php
几乎可以肯定是一个文件,而不是目录,除非你(奇怪的是)有一个名为index.php
的目录。 Apache正确地抱怨没有这样的目录。
你可能打算做一些类似index.php?page=bar
的事情。相应地调整您的.htaccess
。
哦,它把它当作目录来对待? 如果我不想使用查询,该怎么办? – 2010-02-12 03:56:51
@Luke,我更新了我的答案。我想我可能会明白你想要做什么,所以让我知道如果我错过了。 – 2010-02-12 04:02:51