我习惯了代表嵌入的URL信息是这样的:地址表示
http://test.com/reports/statement.php?company=ABC&q=1
我怎么会做这样的呢?
http://test.com/reports/ABC/Q1
我习惯了代表嵌入的URL信息是这样的:地址表示
http://test.com/reports/statement.php?company=ABC&q=1
我怎么会做这样的呢?
http://test.com/reports/ABC/Q1
您需要使用Apache mod_rewrite
来实现此目的。
如果您的服务器已经启用了它,你可以做这样的事情在.htaccess
:
RewriteEngine on
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /statement.php?company=$1&q=$2 [L]
您可以使用$ _ SERVER [“PATH_INFO”]的地址后,访问任何在URL docpath 你的脚本。
例如
http://test.com/reports/statement.php/ABC/Q1
...然后在statement.php你会在$ _ SERVER [ 'PATH_INFO']字符串 “/ ABC/Q1”
当然,你需要设置你的webserver来匹配URL并根据HTTP请求定位正确的脚本。
正如其他人所说的,你必须使用url重写。
通常一个使用它的php应用程序,它应用了称为前端控制器的模式。
这意味着几乎每个url都被重写为指向单个文件,其中$ _SERVER ['PATH_INFO']用于决定要执行的操作,通常通过与您为操作定义的模式进行匹配,或返回404错误,如果URL不匹配任何指定的模式。
这被称为路由和每个现代的PHP框架都有一个组件可以帮助完成这项工作。
一个聪明的举动也将提供一个工具来为您的资源生成url而不是手写它们,这样,如果您更改url模式,则不必在任何地方重写它。
如果您需要一个复杂的路由系统,请查看一些主要框架的路由组件,例如, Symfony2,Zend Framework 2,Auraphp。
对于最简单的php路由器,请检查而不是GluePHP。代码库很小,所以你可以让自己知道这些东西是如何工作的,甚至可以实现一个适合你的需求的小型路由器。
使用mod_rewrite –
搜索URL重写,网上有很多文章。 – Turcia