2012-07-11 61 views
0

我運行一個MMO遊戲粉絲網站http://www.ddmsrealm.com。在這個網站上,我已經運行了一個有任務和物品信息的數據庫多年。它最初是使用MSSQL/ASP構建的,最近我將它轉換爲MYSQL/PHP。在這個轉換中,我優化了數據庫。在這樣做的時候,我改變了一些結構和變量。現在,新的頁面已經啓動並正在運行,但我正在嘗試在我的htaccess文件中編寫規則,以容納數百個任務和數千個項目,並使用新的數據庫變量重新路由到新的數據庫頁面。任何和所有的幫助將不勝感激,因爲我很難學習apache/htaccess。複雜的htaccess URL和變量重寫

我有兩個「細節」頁面需要重新路由,同時改變變量名稱。實際的ID仍然是相同的,所以它應該工作。

原始任務頁面是一個ASP頁:

〜HTTP://www.ddmsrealm.com/ddo/quests/QDetail.aspx

常駐重新路由到新任務的詳細信息頁(WordPress模板頁) :

〜HTTP://www.ddmsrealm.com/index.php/dungeons-and-dragons-quest-and-magic-item-database/dungeons-and-dragons-online-quest-info

現在參數需要像這樣重寫:

老:QuestID新:ddoQuestID

老:SeriesID新:ddoSeriesID

這樣的想法是,這樣的:

〜HTTP://www.ddmsrealm.com/ddo/quests /QDetail.aspx?QuestID=210 & SeriesID = 30

永久重定向爲這樣:

〜HTTP://www.ddmsrealm.com/index.php/dungeons-and-dragons-quest-and -Magic項目數據庫/逼債geons-and-dragon-online-quest-info?ddoQuestID = 210 & ddoSeriesID = 30

如果我可以得到公式和步驟,我相信我可以將它應用到其他頁面。作爲htaccess重寫的新手,我很難理解究竟需要什麼發生以及按什麼順序發生。正如你可以想象的,這已經擡高了我的搜索引擎優化的不良現象,現在有大約5000多個網頁轉到了404網站。另外還有數百個網站鏈接了這個舊網址,現在這些鏈接被破壞,直到我可以解決這個問題。

非常感謝您提前幫助解決這個問題!

+0

你需要有單獨的改寫條件和規則一起。所以,而不是追加現有的一個我應該做另一個另一個URL? – user1518699 2012-07-11 20:35:45

回答

1

的URI改寫本身是非常簡單的使用RewriteRule但改變的查詢字符串,你需要使用對%{QUERY_STRING}變量RewriteCond和匹配,並使用符號反向引用匹配。查看文檔的更多信息:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html

嘗試這樣:

RewriteEngine On 

# Match the query string 
RewriteCond %{QUERY_STRING} QuestID=([0-9]+)&SeriesID=([0-9]+) 
# Rewrite the URI and append the new query string 
RewriteRule ^ddo/quests/QDetail.aspx$ /index.php/dungeons-and-dragons-quest-and-magic-item-database/dungeons-and-dragons-online-quest-info?ddoQuestID=%1&ddoSeriesID=%2 [R=301,L] 
+0

好的,謝謝!我想我明白你在做什麼。所以第一步就是抓住變量。然後與那些你只是把他們放入重寫規則。那麼我可以通過添加&RareItemID =([0-9] +)來獲取其他變量嗎?這將是%3我可以插入到剛剛在第一個下面的新的重寫規則?從一個「編程之家」到另一個正在融化我的大腦。謝謝! – user1518699 2012-07-11 20:02:43

+0

@ user1518699 *「那麼我可以通過添加&RareItemID =([0-9] +)來獲取其他變量嗎?這就是%3,我可以插入到剛剛在第一個下面的新的Rewrite規則中?」*是的,只要是在另一個2之後,你可以使用**%3 **。 – 2012-07-11 20:21:31