我有一些页面,目前有一个网址,如下所示:
www.mydomain.com/directory/?id=123
这将显示来自mySQL表的ID为123的故事。
我想知道的是,是否可以将URL的外观改为看起来像这样:
www.mydomain.com/directory/story-title
我有以下页码...
<?php
header('Content-type: text/html; charset=utf-8');
include $_SERVER['DOCUMENT_ROOT'].'/con.php';
$id = $_GET['id'];
$query = "SELECT * FROM mytable WHERE id = $id";
$result = $mysqli->query($query);
if ($mysqli->error) {
printf("Errormessage: %s\n", $mysqli->error);
}
$row = $result->fetch_array(MYSQLI_BOTH);
echo $row['title'];
?>
以下是我的.htaccess文件:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^directory/(.*)/?$ /directory/index.php?id=$1
原始网址正常,但不是新网址。
答案 0 :(得分:1)
如果要在页面之间进行更改,则无法在URL中隐藏变量...如果“故事标题”对于每个页面都是唯一的(它是数据库中的主键),那么您可以简单地进行.htaccess
重写并使用'story-title'作为id。
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^directory/(.*)$ directory/page.php?story=$1
但是,如果'故事标题'不是唯一的,那么你将不得不实现一种使用id的不同类型的重写,但也会显示故事标题。究竟是怎么做的。
以下内容将重写:
www.domain.com/directory/ID/STORY_TITLE/
到
www.domain.com/directory/page.php?id=ID
.htacess(未经测试):
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^directory/(.*)/(.*)/?$ directory/page.php?id=$1&story=$2
答案 1 :(得分:0)
将故事标题存储在数据库中并将其(story=story-title
)传递到网址而不是id=123
然后写下以下.htaccess代码
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^directory/(.*)$ directory/index.php?story=$1
现在您可以从www.mydomain.com/directory/?id=123
www.mydomain.com/directory/story-title
了
答案 2 :(得分:0)
我并不准确地知道它,但这是我有一天读到的东西。
特殊字符串同时用作标题和ID。它也被称为&#34; slug&#34;。 Slugs在您的数据库中必须是唯一的。
结构:
Title | Text | Slug | ID
------------+----------+-----------------+--------
"Big title" |"HTML etc"| "story-title" | 5
所以你只需使用那个slu to来找到所需的文章。