在没有.htaccess的情况下开发网站导航有哪些替代方案?

时间:2009-12-21 14:30:48

标签: php navigation

理论上:几乎所有现代网站都以这种方式运作:

somedomain.com/layer1/layer2/action

例如:

http://stackoverflow.com/questions/ask

通常使用.htaccess和ModRewrite Engine完成此操作。不久之前,我偶然发现了一篇文章,描述了一些来自php的东西。我不记得这个名字了。这段PHP代码知道当前打开的URL。它能告诉我们调用哪个域,调用什么TLD,第一个目录是什么,第二个目录是什么,被调用文件是什么等等。

我知道Kohana Framework使用这项技术,但不知道在哪里看。有谁熟悉这个?

5 个答案:

答案 0 :(得分:3)

您的意思是使用PATH_INFO环境变量。 参见例如here

如果无法访问.htaccess设置,您将使用此方法在路径中始终只有一个filename.php

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

答案 1 :(得分:3)

在大多数情况下,.htaccess表面下发生的是你正在寻找的东西。很多情况下.htaccess文件只是将任务委托给index.php文件,该文件本身准备处理表示控制器,方法和参数的传递值。

我不明白为什么你不能简单地创建自己的.php文件来解析url并从那里处理值。您只需使用该.php文件作为所有网址的基础:

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

答案 2 :(得分:1)

您可以使用apache的错误文档,但它只是一个黑客(也是重写)而不是一个干净的解决方案。

答案 3 :(得分:1)

您可以使用HTTP标头的组合,但在某些Web服务器上这些标头可能不可靠。要查看服务器上可用的HTTP标头,请使用以下内容创建一个页面:

<?php phpinfo(); ?>

查找PHP变量部分,特别是这些是您可以使用的部分:

_SERVER["HTTP_HOST"]
_SERVER["SCRIPT_NAME"]

答案 4 :(得分:1)

查看Front controller pattern

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

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