使用/ 12而不是?var = 12的网址

时间:2012-08-18 00:45:34

标签: php html url-rewriting

  

可能重复:
  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

此外,这样做会使我的网站更适合搜索引擎吗?感谢。

2 个答案:

答案 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或其等效文件。