-1

我习惯于像这样表示嵌入的 url 信息:

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

我该怎么做呢?

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

3 回答 3

1

你需要使用Apache mod_rewrite来实现这一点。

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

RewriteEngine on
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /statement.php?company=$1&q=$2 [L]
于 2013-01-20T17:04:34.527 回答
0

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

例如

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

...然后在 statement.php 中,您将在 $_SERVER['PATH_INFO'] 中拥有字符串“/ABC/Q1”

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

于 2013-01-20T17:09:01.457 回答
0

正如其他人所说,您必须使用 url 重写。

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

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

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

一个聪明的举措也是提供一个工具来为你的资源生成 url 而不是手写它们,这样如果你改变一个 url 模式,你就不必在任何地方重写它。

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

对于那里最简单的 php 路由器,请改为GluePHP。代码库很小,因此您可以自己了解这些东西的工作原理,甚至可以根据需要实现一个适合您需求的小型路由器。

于 2013-01-20T17:33:39.050 回答