簡體   English   中英

IIS URL重寫無法正常工作404錯誤

[英]IIS URL rewrite not working properly 404 errors

我正在IIS 10上升級joomla網站設置。現在,我有oldsite.com和newsite.com。 我的新站點的文件夾結構略有不同,但是頁面名稱和內容相同。 正確的做法是,客戶不希望在舊頁面上失去SEO排名,並希望將其重定向以在新的升級網站上更正排名。

我需要做以下

  • 是通配符,將被替換為在該位置的URL中鍵入的任何內容

    / div-services / *將重定向到/ div / *

    / div-questions / *將重定向到/ div / questions / *

    / fm-lw-services / *將重定向到/ fm-lw / *

    / locations / *將重定向到/ contact / *

    / resources / blog / *將重定向到/ blog / *

    / contact-us / *將重定向到/ contact / *

我最初將我的模式設置為

(.*)(div-services)(.*) becomes {R:1}( div){R:1}

效果很好,直到我在URL中以某種形式重復了匹配的短語。 在這種情況下,URL中再次出現“ div-services”,它也會被替換。

例如,如果URL是newsite.com/div-services/xyz/abc-div-services,則根據規則,它將替換兩次出現的“ div-services”,這是不希望的,我只需要替換第一次出現的“ div-services”。 我雖然很容易解決,但使我的模式如下

(.*)(/div-services/)(.*) replace to {R:1}(/div/){R:1}

即使在測試模式中它可以成功驗證,但它不起作用並且不重寫我什至嘗試使用轉義字符的URL

(.*)(\\/div-services\\/)(.*) becomes {R:1}(/div/){R:1}

仍然沒有運氣。 經過挖掘和挖掘,我發現了以下示例

div-services/(.*)$ becomes div/{R:1}

這通常效果很好,但是現在如果我沒有結尾的正斜杠,它將無法正常工作

例如,如果URL為newsite.com/div-services,則無法使用,但為newsite.com/div-services/,並且為newsite.com/div-services/xyx,則可以正常使用。

我很茫然,任何幫助將不勝感激。 我只是不明白為什么我不能檢測到正斜杠/

僅供參考,我弄清楚了為什么它不起作用(.*)(/div-services/)(.*) becomes {R:1}(/div/){R:1}

這是因為輸入在第一個正斜杠之后開始,所以我假設這是整個URL,這就是為什么我的正則表達式有效但實際上不起作用的原因。 就像它在運行時一樣,它僅在第一個斜杠后使用URL,從而澄清了很多事情和邏輯解釋,說明即使我的許多模式都可以通過模式測試,但它們為何仍無法正常工作。 希望它可以節省其他人浪費我的時間和時間,因為我不清楚它是如何工作的

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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