簡體   English   中英

301 重寫 URL 后重定向不適用

[英]301 Redirection not apply after rewriting URL

首先,我重寫 URL 結構而不是更改文件名。

RewriteRule ^solar-solutions-in-india.php?$ solution.php [L]

所以當我嘗試打開我的鏈接時,它是從兩個 URL 中打開的。

但出於 SEO 的目的,我想重定向我的舊 URL。

使用 301 將 IE solution.phpsolar-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM