我在這里研究了很多不同的問題,但找不到我的確切答案。
我需要洗掉 FB 正在添加的 URL 的中心部分,但保留結尾和開頭。結尾總是不同的,因為它是一個推薦 URL。
正確網址示例:
https://example.com/?p=2&ref=username
FB 如何創建 URL 并導致 404 page not found 錯誤的示例:
https://example.com/ERROR-DST-QUERY?p=2&ref=username
請記住,username并且p總是會有所不同,因此我無法對用戶名或 p 之后的內容進行硬編碼。
這是我目前正在嘗試的,它正在作業,這意味著它正在洗掉ERROR-DST-QUERY,但是,它正在洗掉 ? 之后的所有內容 在 URL 中也是如此。
RewriteEngine On
RewriteCond %{THE_REQUEST} ERROR-DST-QUERY([^\s] ) [NC]
RewriteRule ^ /%1? [NC,L,R]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(. )$ ERROR-DST-QUERY$1 [L,NC,R=301]
任何幫助將不勝感激,謝謝。
uj5u.com熱心網友回復:
RewriteCond %{THE_REQUEST} ERROR-DST-QUERY([^\s] ) [NC] RewriteRule ^ /%1? [NC,L,R]
由于替代?字串的尾隨,這將洗掉查詢字串。
但是,第二條規則是再次添加它(或者至少它正在嘗試但對于您給出的示例請求會失敗) - 這沒有意義。(還有 301 嗎?)
但是,可以簡化第一條規則(這是您所需要的全部)。要重定向https://example.com/ERROR-DST-QUERY?p=2&ref=username到https://example.com/?p=2&ref=username(維護完全可變的查詢字串),您只需要以下內容:
RewriteRule ^ERROR-DST-QUERY$ / [R=302,L]
默認情況下會復制查詢字串。
將 302(臨時)重定向更改為 301(永久),如果這是意圖,則只有在您確認這按預期作業之后。您需要在測驗前清除瀏覽器快取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/486258.html
