可能重复:
How to: URL re-writing in PHP?
Rewriting an arbitrary number of path segments to query parameters
目前,在我的网站(source world gaming)上,我使用$ _GET方法显示评论/新闻文章。例如,“sourceworldgaming.com/reviews.php?id=40”将在数据库中显示评论#40。
IGN不会这样做。例如,他们使用http://www.ign.com/games/guild-wars-2/pc-896298 - 不需要$ _GET []。这是怎么做到的?他们是否为每个游戏创建了一个索引?
我希望能够制作网址sourceworldgaming.com/reviews.php/40
此外,这样做会使我的网站更适合搜索引擎吗?感谢。
答案 0 :(得分:2)
完成了mod_rewrite和脚本的路由器部分:
网址:http://www.example.com/games/guild-wars-2/pc-896298
实际上是传递给脚本,如:
http://www.example.com/?route=/games/guild-wars-2/pc-896298
使用mod_rewrite(示例)
RewriteEngine On
Options -Indexes
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
然后基本上/games/guild-wars-2/pc-896298
使用
$route = explode('/',$_GET['route'])
因此$route[0]
将是控制器或查询类别。
$route[1]
将是游戏的操作或查询,因为$route[0]
是游戏类别ect
答案 1 :(得分:0)
/foo.php
的请求转到服务器上名为foo.php
的文件只是一个实现细节。网络没有任何需要它的东西,它只是很多系统所做的事情,包括PHP。许多其他系统使用不同的约定,例如路由表或对象遍历。
如果您已经构建了一个使用文件系统来路由请求的网站,获取不同URL的最简单方法是在您使用的任何Web服务器软件上使用mod_rewrite或其等效文件。