[英]301 Redirection not apply after rewriting URL
首先,我重寫 URL 結構而不是更改文件名。
RewriteRule ^solar-solutions-in-india.php?$ solution.php [L]
所以當我嘗試打開我的鏈接時,它是從兩個 URL 中打開的。
但出於 SEO 的目的,我想重定向我的舊 URL。
使用 301 將 IE solution.php
為solar-solutions-in-india.php
。
我嘗試使用以下代碼重定向 301。 但它顯示了太多的重定向。
Redirect 301 /solution.php https://www.abc.or/solar-solutions-in-india.php
為了避免重定向循環,您只需要重定向用戶(或搜索引擎機器人)發出的直接請求,而不是您以后重寫的重寫請求。
在.htaccess
文件的頂部使用 mod_rewrite 嘗試以下操作:
RewriteEngine On
# Redirect direct requests to old URL
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^solution\.php$ /solar-solutions-in-india.php [R=302,L]
# Internally rewrite new URL to the existing old file
RewriteRule ^solar-solutions-in-india\.php$ solution.php [L]
檢查REDIRECT_STATUS
環境變量的條件確保我們只針對直接請求,而不是以后重寫的重寫請求。 REDIRECT_STATUS
變量在初始請求中為空,並在第一次成功重寫后設置為200
(如 200 OK HTTP 狀態)。
不要忘記在RewriteRule
模式(正則表達式)中轉義文字點。
我刪除了尾隨?
在RewriteRule
模式(即^solar-solutions-in-india.php?$
)上,因為它看起來像一個錯誤。 除非你真的想同時匹配<url>.php
和<url>.ph
?!
請注意,以上是 302(臨時)重定向。 只有在測試它工作正常后才將其更改為 301(永久)。 301 由瀏覽器永久緩存,因此在測試時可能會導致問題。 您需要在測試前清除瀏覽器緩存。
注意: Redirect
是一個 mod_alias 指令。 在這種情況下,您應該避免混合來自兩個模塊的重定向。
兩種重定向都會生成無限循環的重定向,這就是您收到“重定向過多”錯誤的原因。
第一行將solar-solutions-in-india.php重定向到solution.php,然后,一旦訪問了solution.php,您就告訴服務器將其重定向到solar-solutions-in-india.php,並且從第一行開始行您將其重定向到solution.php,您有一個無限循環。
您不能將頁面 A 重定向到頁面 B,同時將頁面 B 重定向到頁面 A,恐怕您將不得不刪除其中之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.