2011-01-08 33 views
1

我有一個情況,我需要重定向這樣的URL(1)htaccess的RedirectRule其中目標URL必須被計算

http://site.com/person/145

到這樣一個URL(2 )

http://site.com/person/john

在我的應用程序中,我知道ID 145對應於john這個詞。我將如何創建一個301 RedirectRule,它需要(1),使用PHP或其他腳本爲ID找到值,然後在(2)中動態應用找到的值,即「john」?

該解決方案需要計算,因爲有超過150,000個唯一ID。如果手動完成,那將意味着.htaccess中的150,000 RedirectRule行 - 這似乎不是一個好計劃。

回答

1

使用這樣的規則:

RewriteRule ^person/(\d+)$ person.php?id=$1&redirect=true [L,QSA]

,並有person.php執行重定向到http://site.com/person/john。您的應用程序「知道」如何執行轉換,因此不要浪費時間重寫該邏輯。

如果這兩個URL是等價的,那麼可以認爲這樣做只有最小的好處,因爲相同的查找將需要應用兩次(儘管方向不同),並且會稍微減慢用戶體驗。如果您擔心,例如索引「醜陋」URL的搜索引擎,然後使該頁面包含規範引用,例如,

<link rel="canonical" href="http://site.com/person/john" />

相關問題