如何重写网址(做什么),以便: http://www.example.com/article.php?id=123 它说: http://www.example.com/articles/123/article_title_read_from_database 使用php和mysql 感谢。
答案 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_replace
或preg_replace
来实现此目标。
如果您想在多个地方生成新网址,您可以将网址形式的标题直接插入数据库作为另一列title_url
,然后只需选择它并使用它而不是title
:
SELECT `title_url` FROM `articles` WHERE `id` = $id
由于无法从此文件中连接到数据库服务器,因此无法在.htaccess
中执行此类重写。 (或者至少我不知道这样的解决方案)