2013-10-14 32 views
0

我在轉換我的網址,以友好的URL的過程中,我掙扎一點點與他們中的一些,網址友好和保持層次結構

例如比方說職位和類別,

帖子(詳細):

/post/the-title/10 /* /post.php?id=10 */ 

帖子(名單)

/posts/ /* /posts.php?what=last */ 
/posts/?what=top /* /posts.php?what=top */ 
... 

但我有什麼不那麼小號URE如何實現類,以保持URL的結構,我想acomplish:

/posts/category-name/5 /* /posts.php?what=cat&id=5 */ 

但是,這是如何,我重新改寫我的網址(上市):

RewriteRule ^posts/$ posts.php?$1&friendly=1 [QSA] 

所以我相信我應該preppend它讓對方一個不觸發,這樣的:

RewriteRule ^posts/(.+)/(.+) posts.php?what=cat&id=$2&friendly=1 
RewriteRule ^posts/$ posts.php?$1&friendly=1 [QSA] 

做題,在這裏,有:

1)這是一種方式(近)去? (期待url類型會改變)
2)在另一個之前建立RewriteRule會確保它不會在循環中結束?

任何投入將受到歡迎,我想通過commiting到URL結構

回答

1

對於之前覺得這個「/後/在標題/ 10/* * /post.php?id=10/「

RewriteRule ^post/[^/]+/([0-9]+)/?$ /post.php?id=$1&friendly=1 [L,QSA] 

對於 」/職位//* * /posts.php?what=last /「

RewriteCond %{QUERY_STRING} !^what= 
RewriteRule ^posts/?$ posts.php?what=last&friendly=1 [L,QSA] 

對於」/職位/?什麼=頂部/ * /posts.php?what = top * /「

RewriteCond %{QUERY_STRING} ^what= 
RewriteRule ^posts/?$ posts.php?friendly=1 [L,QSA] 

對於 「/職位/分類名/ 5/* /posts.php?what=cat & ID = 5 * /」

RewriteRule ^posts/[^/]+/([0-9]+)/?$ /posts.php?what=cat&id=$1&friendly=1 [L,QSA] 
+0

感謝您的雁,所以順序並不重要? –

+0

@ToniMichelCaubet上面的順序很好,因爲正則表達式模式之間沒有重疊。 –

+0

好@Jon +1。我在查詢字符串中修復了缺少的'}'。我相信這可能會帶來一個令人不安的錯誤。 –