2013-01-20 23 views
-1

我习惯了代表嵌入的URL信息是这样的:地址表示

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

我怎么会做这样的呢?

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

使用mod_rewrite –

+0

搜索URL重写,网上有很多文章。 – Turcia

回答

1

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

如果您的服务器已经启用了它,你可以做这样的事情在.htaccess

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

您可以使用$ _ SERVER [“PATH_INFO”]的地址后,访问任何在URL docpath 你的脚本。

例如

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

...然后在statement.php你会在$ _ SERVER [ 'PATH_INFO']字符串 “/ ABC/Q1”

当然,你需要设置你的webserver来匹配URL并根据HTTP请求定位正确的脚本。

0

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

通常一个使用它的php应用程序,它应用了称为前端控制器的模式。

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

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

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

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

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