我想从这个地址更改:
www.domain.com/game.php?id=1
类似的事情:
www.domain.com/game/1/THE-NAME-OF-THE-GAME-IN-DB
我该怎么做?
还有一个问题:
我希望当用户转到不存在的地址时,例如,如果它不存在:
www.domain.com/game.php?id=9123912 - this ID doesnt exists
服务器会把他传给404错误。我该怎么做?
非常感谢。
EDIT:
游戏.php:
if (isset($_GET['id'])) {
$row = mysql_num_rows(mysql_query("SELECT * FROM games WHERE id = '{$_GET['id']}'"));
if ($row) {
$game = mysql_fetch_array(mysql_query("SELECT * FROM games WHERE id = '{$_GET['id']}'"));
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: /game/".$game['id']."/".seo_title($game['name']));
}
else {
Header( "HTTP/1.1 404 Not found" );
}
exit;
}
访问:
LIKE YOU SAID. I JUST COPIED.
.htaccess
RewriteEngine On
RewriteRule ^game/([0-9]+)/ /game.php?newid=$1
game.php
if (isset($_GET['id'])) {
$row = dbgetrow("SELECT * FROM games WHERE id = %s",$_GET['id']);
if ($row) {
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: /game/".$row['id']."/".seo_title($row['name']));
} else {
Header( "HTTP/1.1 404 Not found" );
}
exit;
}
if (isset($_GET['newid'])) $_GET['id'] = $_GET['newid'];
这是一个代码,对我有用,但被认为是一个伪代码,可以给你一个想法。
dbgetrow() 函数从数据库中获取行
seo_title() 函数可能像这样
function seo_title($s) {
$s = strtolower(trim($s));
$s = str_replace(" ","-",$s);
$s = preg_replace('![^a-z0-9-]!',"",$s);
$s = preg_replace('!\-+!',"-",$s);
return $s;
}
整个概念已经从 SO 中被扼杀了:)
唯一的games/1/
部分确实很重要,而其余的可以是任何东西,游戏标题只是为了搜索引擎优化的目的。以这个问题标题为例:
如何在 .htaccess 中使用? https://stackoverflow.com/questions/3439430/not-really-a-question-title-lol
:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)