簡體   English   中英

Apache RewriteRule 使用正則表達式避免循環

[英]Apache RewriteRule avoiding loops with regex

我知道以前有人問過類似的問題,但我一直無法找到與我的情況類似的問題。

我在我們的 Joomla 網站上提出了以下形式的請求:

/news/privacy/how-2018-became-facebook%C3%A2%C2%80%C2%99s-worst-year-in-privacy-and-security

首先,這是一個有效的 URL 嗎? 如果沒有,那么我在這里的興趣只是弄清楚如何避免使用涉及正則表達式的 URL 的重定向循環。

這似乎是由於文章標題中的 Microsoft 特殊字符所致。 我想使用正則表達式創建一個 rewriterule,將用戶重定向到正確的 URL。

RewriteRule /news/privacy/how-2018-became-facebook.*s-worst-year-in-privacy-and-security /news/privacy/how-2018-became-facebooks-worst-year-in-privacy-and-security [L,R=301]

但是,以上只會導致重定向循環。 我也試過用點替換上面所有的編碼字符,瀏覽器只報告 URL 無效。 我認為 L 標志足以讓它不進一步處理任何規則,包括它自己。 也許我需要一個 RewriteCond?

這些 URL 也主要由機器人生成。 我認為他們是根據文章標題猜測邏輯 URL,而實際 URL 是出現在上面提供的替換中的內容。 我們正在努力消除這些帶有 Microsoft 特殊字符的標題,但目前,我們希望創建一個適當的替代。 這對我來說也是一個學習練習。

這些 RewriteRules 將根據 access_log 中的條目創建,因此我們將為每個條目提供確切的模式,但我想要一些可以遵循的通用准則,以防止 RewriteRule 循環,例如上面的循環。

實際網址在這里:

https://linuxsecurity.com/news/privacy/how-2018-became-facebooks-worst-year-in-privacy-and-security

您可以看到創建文章時使用 Microsoft 特殊引號字符創建的標題。

您可以將此規則用於此重定向:

RewriteRule ^(news/privacy/how-2018-became-facebook).+s(-worst-year-in-privacy-and-security)/?$ /$1s$2 [L,R=301]

暫無
暫無

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

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