有沒有辦法在 .htaccess 中放置一個小的重寫器,將超過 20.000 個鏈接從基于 phpBB 的舊論壇重定向到新的 phpBB 論壇?舊鏈接是這樣的:
https://example.com/t123456-some-title
新鏈接是這樣的:
https://example.com/forum/viewtopic.php?t=123456
t-123456 是舊論壇中主題號的可變數字,數字相同但帶有 viewtopic.php?t=123456
我認為使用一些正則運算式是可能的,但我不知道如何做到這一點。
也許是這樣的:
RewriteEngine On
RewriteBase /
RewriteRule ^t-([0-9] )-([a-zA-Z0-9-] )$ /forum/viewtopic.php?t=$2 [R,L]
非常感謝@MrWhite,重寫器完美運行。
RewriteRule ^t(\d ) /forum/viewtopic.php?t=$1 [R=301,L]
uj5u.com熱心網友回復:
RewriteRule ^t-([0-9] )-([a-zA-Z0-9-] )$ /forum/viewtopic.php?t=$2 [R,L]
幾乎,除了替換字串中的$2反向參考(參考第二個捕獲子組)將包含,而不是。some-title123456
您似乎不需要捕獲title,因此您可以從第二組中洗掉周圍的括號。事實上,如果您完全丟棄標題,那么您可能根本不需要匹配它,除非它會導致與其他 URL 沖突?您只對id感興趣。
這最終應該是 301(永久)重定向,但是,它目前是 302(臨時)重定向(默認)。因此R,R=301一旦您測驗它按預期作業,請更改為。
例如:
RewriteRule ^t-(\d ) /forum/viewtopic.php?t=$1 [R=301,L]
這匹配任何開始 /t-<number>并重定向到的URL/forum/viewtopic.php?t=<number>
更新:對不起,我弄錯了,舊的 URL 就像
t123456沒有連字符
然后只需洗掉RewriteRule 模式中的連字符。IE。^t(\d )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/380238.html
