3

我不明白:

http://localhost/index.php/articles/edit/1/my-first-article

该 URL 在Kohana 框架文档中作为示例被提及。我在我的安装文件中四处寻找,除了我自己的文件之外没有 .htaccess 与此无关。

那么,怎么可能调用了 index.php,但是作为参数,这些东西看起来像是在 URL 中添加了目录?这看起来并不“真实”。

或者这就是原生 PHP/Apache/HTTP 的实际工作方式?据我了解, / 总是告诉“嘿,一个目录!”。对我来说真的是零意义……这怎么可能?或者他们在某个地方有我看不到/找不到的 .htaccess 吗?

4

6 回答 6

10

来自Apache 文档

AcceptPathInfo 指令

该指令控制是否接受或拒绝包含跟随实际文件名(或现有目录中不存在的文件)的尾随路径名信息的请求。PATH_INFO 环境变量中的脚本可以使用尾随路径名信息。

例如,假设位置 /test/ 指向仅包含单个文件 here.html 的目录。然后对 /test/here.html/more 和 /test/nothere.html/more 的请求都将 /more 收集为 PATH_INFO。

所以我假设这个设置是在 httpd.conf 中启用的。请注意,这与 mod_rewrite 一样,可以在许多地方启用/配置 -请参见此处

于 2009-06-08T20:49:32.110 回答
2

在 PHP 中,您可以使用$_SERVER["PATH_INFO"]变量获取文件名之后的数据。这允许您基本上 GET 信息而不必使用 GET 变量,这意味着 Google 和 co 会认为您正在使用静态页面。这基本上mod_rewrite是经常启用而mod_rewrite通常不启用的替代方案。

这对您来说可能很明显,但对我来说并不是很明显,除非您使用文件名,否则这在索引页面上无法正常工作。例如,http://example.com/test/my/get/params将不起作用,而http://example.com/test/index.php/my/get/params将。

于 2009-06-08T21:48:34.517 回答
1

AcceptPathInfo已为您的服务器打开。:)

于 2009-06-08T20:56:54.967 回答
1

我没有使用 Kohana,所以我不知道我的方法是否有用,但是当服务器不支持 .htaccess 文件(或重写规则)时,我的“框架”会生成如下 URI:

http://www.domain.com/?/articles/edit/1/my-first-article(注意?)

这是 Frog 框架使用的类似方法,只是解析$_SERVER['REQUEST_URI'](或$_SERVER['HTTP-X-REWRITE-URL']在 windows 服务器上)并在“/”上爆炸。

此方法完全独立于重写,并且仍然生成或多或少的 SEO 友好 URI

希望对你有用。

于 2009-06-09T14:59:33.687 回答
0

可能不是这里的情况,当然不推荐,也可能不是正确的答案......

但 ...

我见过人们使用 404 页面来解析请求,然后在正确的页面中包含该信息。

于 2009-06-08T22:06:03.453 回答
0

请参阅CGI 环境变量中的 PATH_INFO 。

于 2009-06-08T22:11:57.420 回答