2011-01-10 42 views
1

我重新開發一個網站(一個基於CodeIgniter的替換它),這是目前的重複程序代碼,一個可怕的混亂,但是,它有良好的搜索引擎排名。因此,我需要保持完全相同的URL結構。使用不同的別名一個目錄使用的.htaccess

公司擁有許多不同的報價頁面,其本質上都是一樣的 - 所以我產生一個乾淨的版本,到處都可以使用。

現在的報價系統是一個文件夾,名爲在/ GET-報價,但由於被要求舊的URL,該文件夾必須是不可見的任何地方。

我想下面的情況發生,但不知道如何:

用戶訪問/insurancequote.php應該(在服務器上)加載/獲取引號/目錄(這又將加載默認的CI路由)。 CI中的基本URL應該是http://www.mysite.com/insurancequote.php(我可以做那一點),所以轉到步驟2將導致:http://www.mysite.com/insurancequote.php/step2(它將映射到/ get-quote/step2)。

其次,訪問/brokerquote.php用戶應顯示在地址欄(重定向?)mysite.com/broker,但對服務器的訪問/獲得引號/經紀人。

第三,用戶訪問許多特定於代理的網頁之一,例如mysite.com/brokername1.php或mysite.com/broker/brokername2.php(是的,它們分散在各處! - 但我知道每個應該在哪裏)應該顯示mysite.com/broker/brokername1或mysite。 COM /經紀人/ brokername2。在服務器上,應該訪問/ get-quote/broker/brokername1或/ get-quote/broker/brokername2。

我不認爲我寫的是完全清楚,所以也許sudocode幫助:

If '/insurancequote.php' 
    Dont Redirect 
    Use '/get-quote/' 

If '/brokerquote.php' 
    Redirect '/broker/' 
    Use '/get-quote/broker/' 

// Do the following (manually) for each broker 
If '/brokername1.php' 
    Redirect '/broker/brokername1/' 
    Use '/get-quote/broker/brokername1/' 

If '/brokers/bname2.php' 
    Redirect '/broker/brokername2/' 
    Use '/get-quote/broker/brokername2/' 

If '/mybrokerpage.php' 
    Redirect '/broker/mybroker/' 
    Use '/get-quote/broker/mybroker/' 

這可能嗎?如果是這樣,我該如何去做呢?

謝謝!

回答

3

你承擔的風險是由於歷史原因搞亂了你的新干淨代碼(接下來你會說,跆拳道,這是一團糟!)。

對於我來說是正確的解決辦法來處理在Apache中,而不是在你的應用程序的URL遷移。每一個你不想保留的reflectedd url應該得到一個410 - 去掉消息(例如考慮參考圖像),每個引用頁面有一個新的匹配頁面應該得到一個301 - 永久移動重定向在右邊頁。然後過了一段時間後,請檢查您服務器的訪問日誌,如果沒有人再檢查舊網址,請刪除規則。

如果你知道每一箇舊網址,所有匹配的網址,然後使用匹配的URL文件(或散列文件,更快)和管理重定向301 RewriteMap指令。您可以在散列文件中包含大量文件,匹配速度應該很快。它應該是一個臨時功能,等待機器人修復網址。

+0

+1同意。它會一團糟。 301是處理此問題的最佳方法。 – 2011-01-11 04:15:43

相關問題