-1

可能重复:
如何:用 PHP 重写 URL?
重写任意数量的路径段以查询参数

目前,在我的网站(源世界游戏)上,我使用 $_GET 方法来显示评论/新闻文章。例如,“sourceworldgaming.com/reviews.php?id=40”将在数据库中显示评论 #40。

IGN 不这样做。例如,他们使用http://www.ign.com/games/guild-wars-2/pc-896298 - 不需要 $_GET[]。这是怎么做到的?他们是否为每个单独的游戏创建索引?

我希望能够使 URL sourceworldgaming.com/reviews.php/40

另外,这样做会使我的网站对搜索引擎更友好吗?谢谢。

4

2 回答 2

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]是游戏类别等

于 2012-08-18T00:54:08.043 回答
0

/foo.php请求转到您服务器上命名的文件这一事实foo.php只是一个实现细节。网络上没有什么需要这样做,这只是很多系统都会做的事情,包括 PHP。许多其他系统使用不同的约定,例如路由表或对象遍历。

如果您已经建立了一个使用文件系统来路由请求的网站,那么获取不同 URL 的最简单方法是在您使用的任何 Web 服务器软件上使用 mod_rewrite 或等效的。

于 2012-08-18T00:59:02.390 回答