用id和title重写url(php)

时间:2011-03-12 10:17:04

标签: php mod-rewrite

如何重写网址(做什么),以便: http://www.example.com/article.php?id=123 它说: http://www.example.com/articles/123/article_title_read_from_database 使用php和mysql 感谢。

2 个答案:

答案 0 :(得分:0)

当使用ID = 123的GET访问示例article.php井页时,检索该号码的php代码是

$my_id = $_GET['id']

,在这种情况下,会产生123。

然后您可以使用

重定向页面
header('Location: http://example.com/articles/$id/other stuff');

我会把MySQL的东西留给其他人,但是一个简单的教程会给你很多关于它的信息。

答案 1 :(得分:0)

处理请求并重定向到新网址:

// get id of record from URL
$id = (int) $_GET['id'];
// suppose connection to database is established already
$result = mysql_query("SELECT `title` FROM `articles` WHERE `id` = $id");
if (!$result) {
    // there is no such an article
    // you can redirect to some other page, or show some error message
} else {
    $row = mysql_fetch_assoc($result);
    $title = $row['title'];
    $urlPart = generateURL($title);
    header('location:/articles/$id/$urlPart');
    exit;
}

你需要generateURL函数,它接受字符串输入并用_替换所有不可用的字符。 (例如,如果你有标题“发生了什么?”它会将'?和空格替换为“what_s_going_on”之类的内容。您可以使用str_replacepreg_replace来实现此目标。

如果您想在多个地方生成新网址,您可以将网址形式的标题直接插入数据库作为另一列title_url,然后只需选择它并使用它而不是title

SELECT `title_url` FROM `articles` WHERE `id` = $id

由于无法从此文件中连接到数据库服务器,因此无法在.htaccess中执行此类重写。 (或者至少我不知道这样的解决方案)