我已將我的論壇從 vb4(使用 vbseo)移至 vb5...
我的舊 vb4 網址是:
example.com/123-threadtitle
新的 vb5 是:
example.com/category/subcategory/123-threadtitle
123 是執行緒的 id。
我的嘗試:
RewriteRule ([0-9] ) -[^*] hxxps://www.example.com/showthread.php?t=$1 [L,R=301]
它有效,但他再次重寫了 vb5 請求,我們遇到了問題。
如何將其設定為忽略檔案夾請求?
RewriteCond %{REQUEST_FILENAME} !-d
不管用 :-(
uj5u.com熱心網友回復:
RewriteRule ([0-9] ) -[^*] hxxps://www.example.com/showthread.php?t=$1 [L,R=301]
正則運算式 ( RewriteRule pattern ) 未錨定,因此匹配請求的 URL 路徑中的任何位置。正則運算式不排除斜杠(即路徑段分隔符),因此會消耗整個 URL 路徑。
如果您的舊 URL 是這種形式,/123-threadtitle那么您似乎只需要匹配第一個路徑段,這自然應該排除“子檔案夾”(我認為您指的是新 URL 格式中的附加路徑段,而不是物理目錄,這是您發布的條件檢查的內容)。
請嘗試以下操作:
# Redirect old URLs to "/showthread.php?t=NNNN"
RewriteRule ^(\d )-[^/] $ https://www.example.com/showthread.php?t=$1 [L,R=301]
該場比賽/123-threadtitle,而不是/category/subcategory/123-threadtitle和外部重定向請求/showthread.php?t=123。
.htaccess在任何現有的重寫之前,這需要接近檔案的頂部。首先使用 302(臨時)重定向進行測驗以避免潛在的快取問題。
但是,出于 SEO 的目的,最好在內部重寫請求/showthread.php?t=123,然后觸發外部重定向到/category/subcategory/123-threadtitlePHP 代碼中的新 URL(即)。
# Internally rewrite old URLs to "/showthread.php?t=NNNN"
RewriteRule ^(\d )-[^/] $ showthread.php?t=$1 [L]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/327295.html
