如何使用 1 到 4 個變數和新文本將下劃線修改為破折號?
要改變這一點:
https://example.com/Text_var1_var2_var3_var4.html
對此:
https://example.com/NewText-var1-var2-var3-var4.html
我已經嘗試過了,但它給出了 404 錯誤:
RewriteRule ^text_([a-zA-Z] )_?([a-zA-Z]*)_?([a-zA-Z]*)_?\(*([a-zA-Z]*)\)*.html?$ newtext-$1-$2-$3-$4^.html
uj5u.com熱心網友回復:
我假設這應該是一個外部重定向(為了“更正” URL),而不是一個內部重寫,就像你試圖做的那樣?
試試這樣:
RewriteEngine On
# Handle from 1 to 4 "variables" and "newtext"
RewriteRule ^text_([a-zA-Z0-9] )\.html$ /newtext-$1.html [R=302,L]
RewriteRule ^text_([a-zA-Z0-9] )_([a-zA-Z0-9] )\.html$ /newtext-$1-$2.html [R=302,L]
RewriteRule ^text_([a-zA-Z0-9] )_([a-zA-Z0-9] )_([a-zA-Z0-9] )\.html$ /newtext-$1-$2-$3.html [R=302,L]
RewriteRule ^text_([a-zA-Z0-9] )_([a-zA-Z0-9] )_([a-zA-Z0-9] )_([a-zA-Z0-9] )\.html$ /newtext-$1-$2-$3-$4.html [R=302,L]
每個“變數”僅限于字符a-z,A-Z和0-9(盡管您在示例指令中省略了數字,但您的示例 URL 確實嚴格包含數字并且您沒有另外說明)。
您可以更“動態”地執行它以避免在每個規則中重復text,newtext但這可能會使其更復雜,并且考慮到它似乎是靜態文本替換和有限數量的“變數”。
RewriteRule ^text_([a-zA-Z] )_?([a-zA-Z]*)_?([a-zA-Z]*)_?\(*([a-zA-Z]*)\)*.html?$ newtext-$1-$2-$3-$4^.html
這有許多問題/例外:
^您在替換字串中有錯誤。- 您正在嘗試在單個指令中處理所有 1 到 4 個變數。這里的問題是替換字串中的連字符數是“固定的”。因此,如果只有一個變數(例如
/text_var.html),那么結果替換將是newtext-var---.html(如果不是錯誤的^) - 我敢肯定這不是意圖。 - 您允許在第四個“變數”周圍使用任意數量的可選括號,但是您在要求中沒有提到這一點?例如。
/text_one_two_three_(((four).html將被匹配,但只有、 和one被two捕獲。threefour - 這是內部重寫,而不是外部重定向。因此,除非
/newtext-var1-var2-var3-var4.html映射到物理檔案,否則這需要進一步重寫才能正確解決(這不太可能起作用)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/446691.html
標籤:linux 阿帕奇 .htaccess 改写 url重写
