在PHP中的URL表示

时间:2013-01-20 17:01:37

标签: php url

我习惯于表示这样的嵌入式网址信息:

http://test.com/reports/statement.php?company=ABC&q=1

我怎么会这样做呢?

http://test.com/reports/ABC/Q1

3 个答案:

答案 0 :(得分:1)

您需要使用Apache mod_rewrite来实现此目标。

如果您的服务器启用了它,您可以在.htaccess中执行以下操作:

RewriteEngine on
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /statement.php?company=$1&q=$2 [L]

答案 1 :(得分:0)

您可以使用$ _SERVER ['PATH_INFO']在脚本地址后访问URL docpath 中的任何内容。

e.g。

http://test.com/reports/statement.php/ABC/Q1

...然后在statement.php中你会在$ _SERVER ['PATH_INFO']中找到字符串“/ ABC / Q1”

当然,您需要设置您的网络服务器以匹配网址,并根据HTTP请求定位正确的脚本。

答案 2 :(得分:0)

正如其他人所说,你必须使用网址重写。

通常是一个使用它的php应用程序,它应用名为 Front Controller 的模式。

这意味着几乎每个url都被重写为指向单个文件,其中$ _SERVER ['PATH_INFO']用于决定做什么,通常是通过匹配为您的操作定义的模式,或返回404如果网址与任何指定的模式都不匹配,则会出错。

这称为路由,每个现代php框架都有一个可以帮助完成这项工作的组件。

智能移动还将提供一种工具来为您的资源生成网址而不是手写它们,这样,如果您更改网址格式,则无需在任何地方重写它。

如果您需要复杂的路由系统,请查看一些主要框架的路由组件,例如: Symfony2,Zend Framework 2,Auraphp。

对于最简单的php路由器,请检查GluePHP。代码库很小,所以你可以让自己了解这些东西是如何工作的,甚至可以根据你的需要实现一个符合你需求的小型路由器。