[英]htaccess rewrite rule containing certain word
我有一家 magento web 商店,我使用插件導入庫存、價格和產品。 令人討厭的是,如果我更新產品名稱等,這個插件不會保存舊的 url。有沒有辦法用 .htaccess 來做到這一點? 例如,我從產品 URL 的末尾刪除了 SKU,但谷歌已將其中一些舊 URL 編入索引。
是否可以將https://www.example.com/xerox-everyday-toner-for-tn242y-yellow-toner-cartridge-006r04226
重寫為https://www.example.com/xerox-everyday-toner-for-tn242y-yellow-toner-cartridge
使用一些通配符? 顯然,每個產品“墨盒”一詞之前的所有內容都會發生變化,因此我想要一個重定向,如果 URL 包含“-cartridge-”,則刪除該模式之后的所有內容,因為 SKU 長度可以更改但僅包含字母數字字符。 如果 URL 不包含“-cartridge-”,則不要執行任何操作。 我已經使用 online.htaccess 生成器嘗試了一些正則表達式模式,但我似乎無法正確理解(除非這些網站不處理正則表達式,這就是我認為它們不起作用的原因)。
RewriteRule (.+-cartridge)-.+$ $1 [R=301,L]
這應該可以完成工作。 直到-cartridge
的所有內容都被捕獲(在一個 go 中捕獲之前的動態部分和這個 static 后綴,意味着我們沒有從多個部分中組裝替換 URL,但可以只使用$1
),然后是-
加必須跟隨一些任意字符。
無論如何,您是否可以添加一條規則,以便排除“多件包裝”是否出現在“-cartridge-”之后。
通常最簡單的方法是在重寫規則之前放置一個“什么都不做”規則。 然后您可以使用正匹配(“如果 URL 以-cartridge-multipack
結尾,什么也不做”),而不是試圖找到否定模式。
RewriteRule -cartridge-multipack$ - [L]
RewriteRule (.+-cartridge)-.+$ $1 [R=301,L]
模式以$
錨定在末尾(意味着在此之后不允許任何內容), -
用於“無替換”,以及使重寫引擎停止當前輪處理的L
標志。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.