2011-10-23 67 views
1

我目前使用以下規則從標準網址重定向到搜索引擎優化網址:重定向不正確的SEO網址爲正常數值

RewriteRule ^books/v/([0-9]+)/(.*)/page([0-9]+) books.php?type=book&id=$1&title=$2&page=$3 [L] 
RewriteRule ^books/c/([0-9]+)/(.*)/page([0-9]+) books.php?type=category&id=$1&title=$2&page=$3 [L] 
RewriteRule ^books/v/([0-9]+)/(.*) books.php?type=book&id=$1&title=$2 [L] 
RewriteRule ^books/c/([0-9]+)/(.*) books.php?type=category&id=$1&title=$2 [L] 
RewriteRule ^books books.php [L]` 

現在,我想要做的是自動重定向有正確的ID和URL錯誤的標題,到正確的URL。

Stackoverflow做了類似的事情 - 如果您輸入的URL的問題具有正確的ID,但匹配的標題錯誤,它會自動將您重定向到正確的URL。

我想這應該使用PHP來完成,但我並不知道最好的方法來做重定向。

+2

把一個腳本調用到你的'的index.php '首先檢查一個索引值並用'header()'和'die()'修正。如果在任何其他內容運行之前運行,這將沒有多少開銷。 –

回答

3

PHP是做這種重定向的方式。

的基本思想很簡單:用ID和標題部分

  • 調用PHP腳本,你看到前面

  • 裏面的PHP腳本,從數據庫中與ID加載記錄

  • 匹配數據庫中記錄的標題和URL中的標題。

  • 如果它們不匹配,做一個頭重定向到ID爲正確的網址,並從數據庫標題:

    header("Location: /books/v/123456"); 
    die(); 
    
+0

最好的方法是優化數字ID上的初始查詢查找,但僅限於證明其緩慢。 –

+0

@ Jared是的,公平,如果性能是一個問題,這是一個好主意 - 但可以說,這應該很少發生,所以非優化方法可能沒問題。 –

+0

我實際上同意*這個*答案,但你已經編輯了我正在迴應的聲明。我想你的意思是'.htaccess'不能明確地做,對吧? (我最初還以爲OP在問什麼。) –