2011-07-13 55 views
1

我已經搜索過,但是這裏的所有例子都不適合我。修改Mod_rewrite規則,將文章標題添加到URL

I have a $_SESSION['title']; //Session variable contains title from calling page 

$title = $_SESSION['title']; //local variable contains article title 

比方說,文章的標題是新聞的最天 如何修改我的規則來

http://www.newstoday.com/readnews/12/news-of-the-day 

BTW http://www.newstoday.com/readnews/12 //this works 

RewriteEngine on 
RewriteRule ^readnews/([0-9]+)$ readnews.php?news_art_id=$1 

回答

1

嘗試類似的東西:

RewriteEngine on 
RewriteRule ^readnews/([0-9]+)(/(.*))?$ readnews.php?news_art_id=$1&other_params=$3 

添加稍後:id後面的所有內容都將在other_params GET參數中。

+0

我該如何在html鏈接中使用此鏈接? –

+0

這兩個你的網址 http://www.newstoday.com/readnews/12/news-of-the-day http://www.newstoday.com/readnews/12 將重定向到readnews.php腳本,您可以從$ _GET ['news_art_id']和「$ news」(對於第二種情況是「」)從$ _GET ['other_params']獲得「12」 ; 從php生成這樣的鏈接: $ id = 0; //假設這是你的編號 $ title = $ _SESSION ['title']; $ link ='http://www.newstoday.com/readnews/'。 $ id。 '/'。 $稱號; –

1

你的正則表達式是不正確的。它應該是:

RewriteEngine on 
RewriteRule ^readnews/([0-9]+) readnews.php?news_art_id=$1 

的$表示URL的末尾,但你想要的ID後的內容,你應該將其刪除

0

首先,你需要確保PHP是能夠區分這兩個網址之間。

RewriteRule ^readnews/([0-9]+)(\/[a-z-]+)?$ readnews.php?news_art_id=$1&title=$2 

這將使$_POST['title']包含news-of-the-day如果標題出現在URL - 否則$_POST['title']將是空的。在此之後,您可以簡單地檢查它是否由PHP設置,如果不是則重定向:

if (empty($_POST['title'])) 
    header("Location: /readnews/".$_POST['news_art_id']."/".$_SESSION['title']); 
+0

你的例子......有沒有像ths這樣的錨鏈接是正確的?..... News healine

+0

是的,'/ readnews/12'和'/ readnews/12/title'應該可以工作。前者應該重定向到後者。 – kba