我正在 WordPress 中重建舊的 .asp 站點,并且在處理 PDF 檔案的 URL 結構時遇到了真正的問題。我知道這可能是冗長的 - 只是試圖繪制準確的圖片以希望找到解決方案。
這是背景資訊。
舊網站上檔案的一些示例 URL:
https://oldsite.example/folder/sub-folder/sub-folder/mypdf.pdf
https://oldsite.example/folder/sub-folder/mypdf.pdf
舊站點的 PDF 檔案已上傳到 WordPress,檔案夾結構為:
https://newsite.example/wp-content/uploads/2022/08/mypdf.pdf
或者
https://newsite.example/wp-content/uploads/2022/09/mypdf.pdf
...取決于上傳的月份
這是問題所在。這些 pdf 中的許多都在具有舊站點結構的 PDF 正文中嵌入了 URL。
因此,在 PDF 中單擊的鏈接https://oldsite.example/folder/sub-folder/mypdf.pdf將導致 404,因為該檔案夾結構不再存在。
我想弄清楚的是一個正則運算式來搜索所有具有舊站點 URL 結構的 pdf,并在新站點/wp-content/uploads/20xx/xx/mypdf.pdf檔案夾之一中找到它對應的匹配 PDF 檔案名。
我正在使用重定向插件
注意:這里使用的是 PHP 的正則運算式(俗稱 PCRE),可能與其他正則運算式庫不完全相同。
我可以撰寫一個可以正常作業的標準重定向:
Source URL: /folder/sub-folder/sub-folder/somepdf.pdf
Target URL: /wp-content/uploads/2022/07/somepdf.pdf
但是寫 500 標準重定向是不切實際的
我遇到的問題是捕獲舊 PDF URL 的任何路徑并將其與新檔案夾結構中的正確檔案夾匹配。(即正則運算式)
每當我嘗試正則運算式時,我最終都會將源檔案夾結構附加到目標 URL 結構(給出 404)
Source URL: `^/([^\s/] \.pdf)`
Target URL: `/wp-content/uploads/^/\d{4}/\d{2}/$1`
RegEx checked.
或者我最終得到一個無休止的重定向回圈
Source URL: /(.*).pdf
Target URL: /wp-content/uploads/2022/07/$1.pdf
RegEx checked.
正則運算式甚至是要走的路嗎?重定向是.htaccess更好的選擇嗎?一個PHP函式可能嗎?
uj5u.com熱心網友回復:
僅當有關新位置的所有資訊都可以從舊位置的 URL 派生時,正則運算式重定向才有效。這不是這里的情況。您在新 URL 中有新資訊。上載檔案的資料現在位于 URL 中,而之前沒有。無法使用正則運算式撰寫單個規則來重定向所有 URL。
你有幾個選擇:
- 分別重定向每個 PDF URL
- 將您的 PDF 上傳到新站點的原始位置
第二個選項比你想象的更有可能。您可以使用 FTP 以任意路徑將檔案上傳到 WordPress 站點。WordPress 的前端控制器僅處理檔案系統上不存在檔案的 URL。如果您將 PDF 與 WordPress 檔案一起放置在其原始目錄中,那么這將適用于大多數 WordPress 安裝。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/513768.html
上一篇:如何在彈出視窗中打開pdf檔案?
