2011-09-24 59 views
1

我有這個網站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; 
} 

,我使用此代碼dispaly它在我的index.php頁面上...

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

任何建議如何做到這一點?我們可以通過使用.htaccess來做到這一點嗎?

+0

如果您的服務器上啓用了.htaccess中可以使用mod_rewrite。 –

+0

但是,這將是一個單一的職位?或者告訴我如何做到這一點? wordpress如何做到這一點? –

+0

我從來沒有與wordpress工作,所以我不知道。你熟悉正則表達式嗎?您可以使用正則表達式捕獲組的重寫規則來執行此操作。 –

回答

2

有關使用mod_rewrite的不幸之處在於,您以url形式提供的數據不是查詢數據庫的最佳方式。但沒有少你的年,月,日和標題變量,所以你需要重寫你的get_content功能來查詢soomething像(取決於你日期是如何存儲在數據庫中。):

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 
+0

其實,我沒有列年,月,日。相反,我有一個名爲「日期」的列作爲時間戳。那麼現在該怎麼做? –

+0

以上更新答案 – user813720

相關問題