2012-12-01 26 views
0

我有這樣的代碼:改寫兩個可變與重寫規則

echo " <td width='57%' height='126' class='bord' ><a href='$category_name-$id.htm' 
    class='title_style'>" . $title . "</a><br /> 
    "; 

所以,$ CATEGORY_NAME是從數據庫類的名稱。所以它改變了!

我需要使用RewriteRule重寫它。我已經試過這樣的事情

Options +FollowSymlinks 
    RewriteEngine on 
    RewriteRule ^([a-zA-Z0-9-]+)-([0-9]+)\.htm$ classified.php?id=$1 [L] 

EX: 讓說$ CATEGORY_NAME =汽車並且$ id = 15,則URL應該看看:汽車-15.htm

我感謝你提前

+1

什麼沒有按」工作? –

回答

0

我懷疑你只是想獲取傳入路徑名的數字部分。

到目前爲止您的正則表達式是正確的,但是您使用了錯誤的佔位符。 $1適用於第一個捕獲組,即您的案例中的類別。並且$2包含第二個匹配組的內容,數字id。

所以你重寫規則應該是:

RewriteRule ^([a-zA-Z0-9-]+)-([0-9]+)\.htm$ classified.php?id=$2 [L] 

這可能是進一步BTW簡化:

RewriteRule ^([\w-]+)-(\d+)\.htm$ classified.php?id=$2 [L] 

(雖然也一致強調在類別部分即可。)

+0

謝謝馬里奧。它只適用於$ category_name是一個單詞的情況。如果$ category_name ='Health care'或$ category_name ='Cars/Bikes'?我試圖讓空間,但我得到服務器錯誤:RewriteRule ^([a-zA-Z0-9 - ^/_] +) - ([0-9] +)\。htm $ classified.php?id = $ 2 [L] – Rocks

+0

Got itRewriteRule ^([A-Za-z0-9 _- \ s] +) - (\ d +)\。htm $ classified.php?id = $ 2 [L] – Rocks