2010-02-12 37 views
2

我正在使用Mod重写删除index.php。我不想使用查询。我想要foo.com/bar被解释为foo.com/index.php/barHtaccess重写未找到

它做得很好,但给我未找到错误。在此服务器上未找到请求的URL /home/foo/www/index.php/bar。

为什么!!

+0

@Luke,我更新了我的答案。我想我可能会明白你想要做什么,所以让我知道如果我错过了。 – 2010-02-12 04:02:51

回答

0

更新

我想我只是想通了,你想要做的事。你看,你可以在幕后传递查询,但你无法通过你在幕后建议的内容。你必须做一个实际的重定向。像这样的东西(最重要的部分是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] 

我也认为窗口的最后几个版本支持.在目录中一样好,但我不确定。

+0

是的,Windows将在目录中允许'.'。 – 2010-02-12 03:52:12

+0

我正在寻找一种分段方法,而不是通过查询。 Code Igniter使用它,我相信。除非他们只是偷偷摸摸。 http://bit.ly/bGdA8n – 2010-02-12 04:21:48

+0

@Luke,通读您分享的整个链接。你会看到他们的'在线解决方案'实际上是'index.php?/ bar',它仍然使用查询字符串,只是没有变量名。 – 2010-02-12 04:41:17

0

index.php几乎可以肯定是一个文件,而不是目录,除非你(奇怪的是)有一个名为index.php的目录。 Apache正确地抱怨没有这样的目录。

你可能打算做一些类似index.php?page=bar的事情。相应地调整您的.htaccess

+0

哦,它把它当作目录来对待? 如果我不想使用查询,该怎么办? – 2010-02-12 03:56:51