【发布时间】:2019-09-22 10:42:54
【问题描述】:
这个让我卡住了,所以我希望有人能指出我正确的方向。
我有一个名为 blog_posts_content 的数据库来保存我的所有帖子。然后我有一个 viewpost.php 文件,它请求与 postSlug 匹配的帖子内容,并在“id”上发出 get 请求,如下所示:
<?php require($_SERVER['DOCUMENT_ROOT'] . '/includes/config.php');
$stmt = $db->prepare('SELECT * FROM blog_posts_content WHERE postSlug = :postSlug');
$stmt->execute(array(':postSlug' => $_GET['id']));
$row = $stmt->fetch();
//if post does not exists redirect user.
if($row['postID'] == ''){
header('Location: ./');
exit;
}
?>
这是数据库中的示例 postSlug ->
https://website.co.uk/testfolder/viewpost.php?type=services&category=webdesign&id=postname
然后我试图让这个显示为
https://website.co.uk/testfolder/services/webdesign/postname
到目前为止,我的测试文件夹中有这个 htaccess 文件
RewriteEngine On
RewriteBase /testingfolder/
RewriteRule ^([^/]+)/([^/]+)/?$ catpost.php?category=$1&id=$2 [L]
RewriteRule ^a-(.*)-(.*)$ archives.php?month=$1&year=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ viewpost.php?type=$1&category=$2&id=$3 [QSA,L]
测试文件夹包括以下文件:
索引 观点 猫帖
所以我将 index.php 作为主页当然,viewpost 请求帖子内容,然后 catpost 显示类别。
现在我希望我已经足够详细地介绍了背景,所以现在开始讨论这个问题。
上面没有显示页面,所以如果我在索引上并点击上面概述的 slug 的链接,我会根据 php 请求重定向回索引页面。
如果我只是使用这个 htaccess 并且只使用 postSlug 作为帖子名,那么我可以让帖子显示
RewriteEngine On
RewriteBase /testfolder/
RewriteRule ^category/(.*)$ catpost.php?id=$1 [L]
RewriteRule ^a-(.*)-(.*)$ archives.php?month=$1&year=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ viewpost.php?id=$1 [QSA,L]
但是,我的网址最终变成了
https://website/testfolder/postname
我在质疑是php请求还是htaccess规则。
我该如何解决这个问题?
【问题讨论】:
标签: php .htaccess web mod-rewrite