我不明白:
http://localhost/index.php/articles/edit/1/my-first-article
此Kohana framework documentation中提到了此URL作为示例。我在我的安装文件中捅了一下,除了我自己的那个与之无关的.htaccess之外没有.htaccess。
那么,如何调用index.php然后,作为参数,这些东西看起来像添加到URL的目录?这看起来并不“真实”。
或者这只是本机PHP / Apache / HTTP的实际工作原理?据我所知,/总是说“嘿,一个目录!”。对我来说真的没有意义......怎么可能?或者他们有一个我无法看到/找到的.htaccess?
答案 0 :(得分:10)
来自Apache docs:
AcceptPathInfo指令
该指令控制是否 包含尾随的请求 跟随的路径名信息 实际文件名(或不存在的文件 在一个现有的目录中)将 接受或拒绝。尾随 可以制作路径名信息 可用于PATH_INFO中的脚本 环境变量。
例如,假设位置 / test /指向一个目录 仅包含单个文件 here.html。然后请求 /test/here.html/more和 /test/nothere.html/more都收集 /更多为PATH_INFO。
所以我假设在httpd.conf中启用了这个设置。请注意,这可以像mod_rewrite一样在许多地方启用/配置 - see here。
答案 1 :(得分:2)
在PHP中,您可以使用$_SERVER["PATH_INFO"]
变量获取文件名后面的数据。这使您基本上可以获取信息而无需使用GET变量,这意味着Google和co会认为您正在使用静态页面。这基本上是mod_rewrite
的替代方案,通常会启用,而mod_rewrite
通常不会启用。
这对您来说可能是显而易见的,但它并不是立即对我而言,除非您使用文件名,否则它在索引页面上无法正常工作。例如,http://example.com/test/my/get/params
将不起作用,而http://example.com/test/index.php/my/get/params
将会起作用。
答案 2 :(得分:1)
AcceptPathInfo。 :)
答案 3 :(得分:1)
我没有使用Kohana,所以我不知道我的方法是否会有用,但是当服务器不支持.htaccess文件(或重写规则)时,我的'framework'会生成这样的URI:
http://www.domain.com/?/articles/edit/1/my-first-article(请注意?)
这是Frog框架使用的类似方法,只需解析$_SERVER['REQUEST_URI']
(或Windows服务器上的$_SERVER['HTTP-X-REWRITE-URL']
)并在'/'上爆炸。
此方法完全独立重写,仍会生成或多或少的SEO友好URI
希望它对你有用。
答案 4 :(得分:0)
可能不是这里的情况,当然不推荐,也可能不是正确答案......
但是......
我看到人们使用404页面来解析请求,然后在页面中包含该信息。
答案 5 :(得分:0)
请参阅CGI Environment Variables中的PATH_INFO。