2010-04-28 24 views
0

我想就像一個URL重寫:
http://my.project/mydomain.com/ANY_NUMBER_OF_CATEGORIES/designer/4/designer-name/page.html
這樣:
http://my.projects/mydomain.com/ANY_NUMBER_OF_CATEGORIES/page.html?designer=4如何將平面鏈接重新寫入動態鏈接並保留查詢字符串?

我想用國防部重寫來實現這一目標。

注意事項:

  1. 任何數量的類別可以是 'mydomain.com/' 和'/設計師之間。
    1. 例如,url可以是http://my.project/mydomain.com/designer/4/designer-name/page.html,也可以是http://my.project/mydomain.com/tops/shirts /small/designer/4/designer-name/page.html
  2. 查詢字符串可能在原始url中提供,需要在重寫的url中保留。
    1. 對於設置可以是例如的URL:http://my.project/mydomain.com/designer/4/designer-name/page.html顏色=紅色&類型=襯衫
    2. 鑑於結果URL上述網址將需要:http://my.projects/mydomain.com/page.html?designer = 4&color = red&type = shirt
    3. 查詢字符串的順序無關緊要。 'designer = 4'部分可以在查詢字符串的其餘部分之前或之後出現。

我是新來的.htaccess並重新寫,所以任何實例和或解釋將不勝感激。非常感謝你。

回答

0

我最後不得不創建兩個單獨的RewriteRules:

RewriteRule ^designer/([^/]+)/.*/([^/]+)\.html $2.html?designer=$1 [NC,L,QSA] 
RewriteRule (.*)/designer/([^/]+)/.*/([^/]+)\.html $1/$3.html?designer=$2 [NC,L,QSA] 

感謝濃湯您指出重寫的[QSA]部分。

1

在.htaccess文件試試這個:

RewriteEngine on 
RewriteRule ^(.+/)?(\d+)/[^/]+/([^/]+\.html)$ $1$3?designer=$2 [L,QSA] 
+0

這看起來不錯,它看起來像它幾乎這樣做,但url的「設計器」部分留在重寫。 結果---- http://my.project/mydomain.com/designer/4/designer-name/page.html 變爲 http://my.projects/mydomain.com/designer/page.html ?設計師= 4 雖然我希望它會是: http://my.projects/mydomain.com/page.html?designer = 4 我做了一些在我的.htaccess文件似乎工作 - 但是作爲「noob」我不確定它有多好: RewriteRule^designer /([^ /] +)/.*/([^ /] +)。html $ 2.html?designer = $ 1 [ NC,L] 但我必須以這種方式添加兩個幾乎重複的規則。 – jeremysawesome 2010-04-29 16:16:45