如何根据帖子的日期和标题设置博客帖子的永久链接?

时间:2011-09-24 05:20:13

标签: php mysql .htaccess

我正在访问此网站http://www.finalyearondesk.com。我的博客帖子链接设置如下.. http://www.finalyearondesk.com/index.php?id=28。我希望它像这样设置... finalyearondesk.com/2011/09/22/how-to-recover-ubuntu-after-it-is-crashed/。

我使用以下功能来获取这些帖子......

function get_content($id = '') {

    if($id != ""):
        $id = mysql_real_escape_string($id);
        $sql = "SELECT * from cms_content WHERE id = '$id'";
        $return = '<p><a href="http://www.finalyearondesk.com/">Go back to Home page</a></p>';
        echo $return;

    else:
        $sql = "select * from cms_content ORDER BY id DESC";

    endif;

    $res = mysql_query($sql) or die(mysql_error());

    if(mysql_num_rows($res) != 0):

        while($row = mysql_fetch_assoc($res)) {
            echo '<h1><a href="index.php?id=' . $row['id'] . '">' . $row['title'] . '</a></h1>';
            echo '<p>' . "By: " . '<font color="orange">' . $row['author'] . '</font>' . ", Posted on: " . $row['date'] . '<p>';
            echo '<p>' . $row['body'] . '</p><br />';
        }

    else:

        echo '<p>We are really very sorry, this page does not exist!</p>';

    endif;
}

我正在使用此代码在index.php页面上显示它...

<?php
    if (isset($_GET['id'])) :
        $obj -> get_content($_GET['id']);
    else :
        $obj -> get_content_summary();
    endif;
?>

有任何建议如何做到这一点?我们可以使用.htaccess吗?

1 个答案:

答案 0 :(得分:2)

使用mod_rewrite的不幸之处在于,您以url形式提供的数据不是查询数据库的最佳方式。但是你有年,月,日和标题变量,所以你需要重写你的get_content函数来查询类似的东西(取决于你的日期存储在数据库中的方式。):

select * from cms_content 
   WHERE date='mktime(0,0,0,$month,$day,$year)'
   AND title='$title'
 ORDER BY id DESC

.htaccess会是这样的:

RewriteRule ^(.*)/(.*)/(.*)/(.*)$  index.php?year=$1&month=$2&day=$3&title=$4