簡體   English   中英

Drupal:動態質量301重定向

[英]Drupal: Dynamic mass 301 redirecting

我們有近十萬條路徑需要301重定向到新結構。 就像是:

 lang.site.com/section/subsection/article
                  -> 
 lang.site.com/newsection/newsubsection/article

過去,當從domain.com遷移到newdomain.com時,我們只需要放置一個.htaccess文件,其中包含10k +腳本生成的行,將舊路徑與新路徑匹配,就可以了。 它不會影響新域的性能,因為.htaccess僅在用戶嘗試訪問舊域時由Apache讀取。

現在這將無法工作,因為域名沒有更改,只能更改路徑的結構。 更改路徑的數量接近10萬個標記,因此很明顯,Apache為每個頁面加載讀取10萬行.htaccess的想法是荒謬的。

我很想知道一些如何以較低的性能成本正確實現這一點的想法。 我並不是要你們提供現成的解決方案,只是在集思廣益中提供一些幫助,這將是我們用例中最可行的解決方案。

我們還將在Apache的前面放置一台Varnish服務器來提供緩存的內容,但是我想以下解決方案仍然可以使用,因為Varnish無法滿足的請求將在我們的LAMP環境中轉發到Apache。

我的想法是:

  • Drupal 7有一個html.tpl.php文件,該文件具有頁面的<header>部分
  • 在執行html.tpl.php ,我們將檢查MySQL數據庫以查看用戶請求的路徑是否在新的pathalias表中
    • 如果找不到路徑,並且找到old path <-> new path關系:
      • PHP header('Location:'); 到301,將用戶重定向到正確的新位置
    • 其他:
      • 讓Drupal照常處理請求並繼續執行

我們還被告知要更新舊的域重定向,以不帶301鏈接的方式將用戶直接帶到新站點。 我想我們可以利用相同的數據庫檢查來查看最舊路徑與通過舊路徑的最新路徑之間是否存在關系。 幸運的是,我們已經存儲了所有這些甚至更舊的關系,以防萬一,現在它們可以派上用場了。

如果您通讀過任何有關如何以最佳方式解決此問題的想法,將不勝感激:)

這就是我會嘗試的

1)簡單的方法。

試用模塊http://drupal.org/project/pathauto

您可以為模塊定義模式。

lang.site.com/newsection/newsubsection/article

lang.site.com/[node:newsection]/[term:newsubsection]

// This is an example not the actual pattern u will use. If you can't seem to get this then 
revert back.

僅在cron作業期間創建路徑。 因此您的表現不會受到影響。

2)否則上述方法應該足夠好。 您可以編寫一個模塊並實現以下邏輯

A-hook_cron()//在每次執行cron時,都應運行以下命令B-使用node_load()加載節點C-檢查節點的uri是否與您的模式D-如果不匹配,請進行更改。 E-使用node_save()保存節點

歡呼雀躍

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM