我創建了一個新站點,Google 將其中一個我已經更改的 URL 編入索引,因此想在新 URL 中添加 301。URL 是 SEF URL,因此已被重寫。
我已經設法在瀏覽器中使用正確的重寫 URL 創建了一個從舊頁面到新頁面的 301,但是我完成它的方式我有一個尾隨?在我的網址末尾。
首先,這還重要嗎?谷歌會將其列為有和沒有 的同一頁面嗎?還是會用 ? 作為重復內容的單獨頁面?
如果將其視為單獨的頁面,那么我該如何洗掉它?在最后?
這是我在 htaccess 中的規則:
RewriteEngine on
Redirect 301 /search/toys/heroes-of-goo-jit-zu https://example.com/search/figures/heroes-of-goo-jit-zu?
RewriteBase /
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule .? https://example.com%{REQUEST_URI} [R=301]
RewriteRule ^search/([a-zA-Z0-9.\-_] )/([a-zA-Z0-9.\-_] )/([a-zA-Z0-9.\-_] ) search.php?category=$1&subcategory=$2&subsubcategory=$3 [QSA]
RewriteRule ^search/([a-zA-Z0-9.\-_] )/([a-zA-Z0-9.\-_] ) search.php?category=$1&subcategory=$2 [QSA]
RewriteRule ^search/([a-zA-Z0-9.\-_] ) search.php?category=$1 [QSA]
沒有 ? 在規則的末尾,我在 URL 的末尾得到了我不想要的所有查詢字串。我最后嘗試了各種標志,[QSA] 和 [QSD] 都會導致 500 錯誤,這是我能找到的唯一方法來執行重定向和重寫而不會導致 500 錯誤
uj5u.com熱心網友回復:
mod_aliasRedirect指令將保留?目標 URL 的尾隨。您應該使用 mod_rewriteRewriteRule指令來按照您的需要執行并洗掉查詢字串。并且由于您將 mod_rewrite 用于其他重定向/重寫,您應該避免混合來自兩個模塊的重定向以避免意外沖突。(mod_rewrite 總是首先處理,盡管組態檔中的指令順序很明顯。)
改用 mod_rewrite :
RewriteRule ^search/toys/heroes-of-goo-jit-zu$ https://example.com/search/figures/heroes-of-goo-jit-zu [QSD,R=301,L]
( QSDQuery String Discard) 標志從重定向回應中洗掉原始查詢字串。
我已經在pattern$中包含了字串結尾錨 ( ) ,盡管嚴格來說它應該被省略以等同于您的原始指令(即前綴匹配)。RewriteRule Redirect
您需要在測驗前清除瀏覽器快取,因為之前的 301 已被快取。(首先使用 302 進行測驗 - 臨時 - 重定向以避免潛在的快取問題。)
您還缺少L所有其他規則上的標志-應該添加。至少,這可以防止對后續規則進行不必要的處理,但是L由于規范重定向上缺少標志,這可能會導致錯誤的重定向,從而暴露重寫的 URL。
更新:澄清有關QSA標志的評論中的討論。這與您當前的問題無關。QSA如果您希望在請求的 URL 上出現查詢字串(以便將查詢字串與替換字串中所述的內容合并),則需要該標志,否則,應洗掉該標志。
我最后嘗試了各種標志,[QSA] 和 [QSD] 都會導致 500 錯誤
flags引數僅適用于 mod_rewrite ( RewriteRuleand指令) -這對 mod_alias (and ) 指令RewriteCond無效。RedirectRedirectMatch
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/483529.html
