2014-03-06 54 views
0

我有一個網頁,通常是這樣的:mod_rewrite的問題與URL如果頁面的標題有破折號

http://www.url.com/folder/content.php?name=this-is-the-page-title&item_id=129 

正如你可以看到,頁面的標題包含在URL中,短橫線分開。

所以,我想將其轉換爲與mod_rewrite的以下內容:

http://www.url.com/this-is-the-page-title-129.html 

對於這一點,我用類似的mod_rewrite規則:

RewriteRule ^([^-]*)-([^-]*)\.html$ /folder/content.php?name=$1&item_id=$2 [L] 

不幸的是,使用規則,我得到一個404錯誤。我認爲問題是因爲標題用破折號( - )分隔,分隔符本身也是破折號,所以它很可能無法告訴彼此的變量或類似的東西。

當我改變從儀表板規則( - )斜線(/),這樣它工作正常:

RewriteRule ^([^-]*)/([^-]*)\.html$ /folder/content.php?name=$1&item_id=$2 [L] 

但隨後則網址:

http://www.url.com/this-is-the-page-title/129.html 

...我不想要,因爲我不得不重寫頁面的整個結構。

有什麼辦法得到它的工作作爲

http://www.url.com/this-is-the-page-title-129.html 

即使網頁標題被短橫線分開?

謝謝:)

回答

0

的問題是,您所指定([^-]*)這意味着匹配的子模式不應包含任何破折號...但你的頁面標題可能包含其中。

所以,相反,讓我們第一部分由什麼但斜線:

RewriteRule ^([^/]*)-([0-9]+)\.html$ /folder/content.php?name=$1&item_id=$2 [L] 

這樣一來,最後一個破折號之前的所有內容將進入第一子圖案,最後破折號後的數字 - 進入第二個。

+0

完美的作品!非常感謝 :) – user2643870