.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 / Apache

允许htaccess文件apache [重复]

.htaccess 文件 - 删除 .php 扩展名“服务器错误”[重复]

.htaccess - 将所有其他 php 文件重写为 index.php [重复]

使用.htaccess文件将子域与文件夹匹配[重复]

Safari html5 视频 mp4 未在 htaccess 文件夹中播放,[重复]