【问题标题】:Htaccess Rewrite Not Found未找到 Htaccess 重写
【发布时间】:2010-02-12 03:46:04
【问题描述】:

我正在使用 Mod Rewrite 来删除 index.php。我不想使用查询。我希望 foo.com/bar 被解释为 foo.com/index.php/bar

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

为什么!!

【问题讨论】:

  • @Luke,我更新了我的答案。我想我可能明白你想要做什么,所以如果我错过了,请告诉我。

标签: php mod-rewrite url-rewriting file-not-found


【解决方案1】:

更新

我想我只是想通了你想要做什么。你看,你可以在幕后传递查询,但你不能在幕后传递你的建议。你必须做一个实际的重定向。像这样的东西(重要的部分是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 在目录中也支持.,但我不确定。

【讨论】:

  • 是的,Windows 将允许 . 在目录中。
  • 我正在寻找一种分段的方法,而不是通过查询。我相信 Code Igniter 使用它。除非他们只是偷偷摸摸。 bit.ly/bGdA8n
  • @Luke,通读您分享的整个链接。您会看到他们的“在线解决方案”实际上是 index.php?/bar,它仍然使用查询字符串,只是没有变量名。
  • 啊!极好!就是这样。谢谢道格!
  • @Luke Burns 没问题的人,对不起,我一开始误解了你想要什么!祝你的项目好运!
【解决方案2】:

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

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

【讨论】:

  • 哦,它把它当作一个目录?如果我不想使用查询,该怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 2016-04-09
  • 2014-08-09
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多