.htaccess 文件来自数据库 [重复]
Posted
技术标签:
【中文标题】.htaccess 文件来自数据库 [重复]【英文标题】:.htaccess files slugs from database [duplicate] 【发布时间】:2017-08-26 16:36:03 【问题描述】:关于 `.htaccess、slugs 和重写 url 的非常简单的问题。
如果我有一篇文章,如何将地址栏中的整个 url 替换为数据库中的内容?
例如在我的网址中我有/article.php?id=1
在这种情况下,对于 id 为 1 的文章的 id,我在数据库中有一个名为“art_url”的字段名称,其值为/article/my-url
我怎样才能让它成为地址而不是/article.php?id=1
?
当我尝试使用此 URL dev.mywebaddress.com/article/my-url/
时出现 PHP 错误。我的 PHP 中的 htaccess 文件有问题吗?这是我的代码:
<?php
if(!empty($_GET['art_url']))
$sql = "
SELECT articles.id AS articleid, articles.art_title AS title, articles.art_url AS art_url, articles.art_content AS content, campaigns.id, campaigns.camp_title AS camptitle
FROM articles
LEFT JOIN campaigns ON articles.art_campaign = campaigns.id
";
// then do the query, etc....
$results = $db->query($sql);
if($results->num_rows)
While($row = $results->fetch_object())
$camptitle = nl2br(htmlentities($row->camptitle));
$title = nl2br(htmlentities($row->title));
$content = nl2br($row->content);
$art_url = ($row->art_url);
echo "
<H2>$camptitle</H2>
<H3>$title</H3>
<p>$content</p>
";
else
echo 'No Results';
?>
.htaccess 文件
# Turn Rewrite Engine On
RewriteEngine On
#RewriteRule ^article/([0-9a-zA-Z-/]+) article.php?art_url=$1
【问题讨论】:
【参考方案1】:您可以在 PHP 代码中添加 301 重定向。查找art_slug
的值,然后..
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.yourdomain.com/".$art_slug);
?>
您的 .htaccess 文件可以设置为使用以下方式获取 XXX/YYY:
RewriteEngine on
RewriteRule ^([^/\.]+)/([^/\.]+)$ index.php?firstSlug=$1&secondSlug=$2 [NC,L,QSA]
然后您会在 index.php 中收到 firstSlug=XXX 和 secondSlug=YYY
【讨论】:
这是一个重定向,但是我如何设置 htaccess 文件来识别那个 url? 我已经更新了我的答案以上是关于.htaccess 文件来自数据库 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
.htaccess 文件 - 删除 .php 扩展名“服务器错误”[重复]