Php 我有哪些选择来开发没有.htaccess的网站导航?

Php 我有哪些选择来开发没有.htaccess的网站导航?,php,navigation,Php,Navigation,理论上:几乎所有现代网站都是这样工作的: somedomain.com/layer1/layer2/action 例如: http://stackoverflow.com/questions/ask 通常这是通过.htaccess和ModRewrite引擎完成的。不久前,我偶然发现了一篇文章,其中描述了一些直接来自php的东西。我不记得那个名字了。这段PHP代码知道当前打开的URL。它能够告诉什么域被调用,什么TLD被调用,什么是第一个目录,什么是第二个目录,什么是被调用的文件,等等 我知道

理论上:几乎所有现代网站都是这样工作的:

somedomain.com/layer1/layer2/action
例如:

http://stackoverflow.com/questions/ask
通常这是通过.htaccess和ModRewrite引擎完成的。不久前,我偶然发现了一篇文章,其中描述了一些直接来自php的东西。我不记得那个名字了。这段PHP代码知道当前打开的URL。它能够告诉什么域被调用,什么TLD被调用,什么是第一个目录,什么是第二个目录,什么是被调用的文件,等等


我知道Kohana框架使用了这项技术,但不知道从哪里看。熟悉这一点的人?

您的意思是使用
PATH\u INFO
环境变量。 见例

但是,如果无法访问.htaccess设置,则使用此方法的路径中始终会有一个
filename.php

www.domain.com/filename.php/questions/ask/

在大多数情况下,.htaccess表面下发生的事情就是您所寻找的。在许多情况下,.htaccess文件只是将任务委托给index.php文件,该文件本身准备处理传入的表示控制器、方法和参数的值

我不明白为什么不能创建自己的.php文件来解析url并从中处理值。您只需在所有URL中使用该.php文件作为基础:

www.mysite.com/index.php/controller/method/parameter1/parameter2

您可以使用apache的错误文档,但这只是一种黑客行为(以及重写),并不是一个干净的解决方案。

您可以使用HTTP头的组合,但这些头在某些web服务器上可能不可靠。要查看服务器上有哪些HTTP头可用,请制作一个包含以下内容的页面:

<?php phpinfo(); ?>
看一看这张照片

基本上,您可以将所有请求重定向到一个PHP文件,该文件对URL进行解码并决定下一步操作


顺便说一句,这不是特定于PHP的。

要特定于mor:写入.htaccess文件
ErrorDocument 404/index.PHP
(假设您在文档根目录中)。这会将所有404错误重定向到index.php?我想给出完全相同的答案!我没有-1,但这是否意味着您将向所有人返回错误状态404?这不是一个坏主意吗?我认为乔纳森·桑普森的答案是正确的,尤其是因为(正如你所建议的)使用404来处理URL是一种黑客行为,并不是一种实现预期结果的聪明方法。@Dominic是的,只要看你的错误日志爆炸:D,我不确定是否可以在PHP中设置201头,以强制它使用正确的状态代码进行响应。。。尽管如此,实现预期结果的一种糟糕的方法仍然很有趣。哦,是的,我现在记得在我以前的科哈纳时代,我必须在.htaccess中为这个www.domain.com/filename.php/问题设置一个重写。这将是下一个问题:-)嗯…那么你想用mod_rewrite来解决你不使用mod_rewrite所产生的问题?还是我完全误解了你说的话?是的,有点;)。。。以编程方式处理这个问题是有意义的。设想一个允许您创建导航层的框架。这就是我想做的。我认为用PHP做这件事比在.htaccess中乱搞要好。甚至不知道PHP是否可以读/写.htaccess。当然,这也可能是一个解决方案,尽管我喜欢用PHP实现它的想法。
_SERVER["HTTP_HOST"]
_SERVER["SCRIPT_NAME"]