如果我理解正確.ht*,下一個代碼中的運算式將匹配以 .ht 開頭的所有內容,所以我.ht_lalala是安全的。
<Files ".ht*">
Require all denied
</Files>
但是下一個呢?
(^\.ht|~$|back|BACK|backup|BACKUP$)
匹配檔案是否正確:.htaccess, back, backup, BACKUP? 否則接下來會更好
(^\.ht*|back*|BACK*$)
我想了解的是~$我的代碼中的實際含義(在 RegEx 模式中)。我不知道為什么以及何時將它放在那里,但我的代碼中有它,現在我懷疑它是否正確。
我知道關于 RegEx 的基本知識,什么是^and $,這*意味著來自以前的文本/標記的 0 或 N,但~在模式中沒有意義,除非它只是一個簡單的字符并且除了字面上匹配之外什么都不做~。我已經閱讀了 Apache 檔案,我猜想多個匹配 FilesMatch 和 DirectoryMatch 更好,但是正則運算式也可以用于指令:檔案和目錄,加上 ~ 字符,如檔案示例中所述。
<Files ~ "\.(gif|jpe?g|png)$">
#...
</Files>
好吧,我真正想要的是知道如何匹配不同的檔案或目錄。
還有一件事,我應該逃避.嗎?因為默認 httpd.conf 不這樣做。或者它只是 httpd.conf 和 .htaccess 不同(這對我來說沒有意義)
更新
回答我自己的問題,如何與 RegEx 中的任何一個.匹配隱藏。其次,我發現簡潔的模式^(\..*)$可以完成這項作業,會給我我需要的東西。因此,如果將來我想隱藏某些內容,我只需.在名稱的開頭添加 。
我們開始吧,下一個代碼將拒絕從網路訪問任何名稱以.(已測驗,有效)開頭的檔案和目錄
<FilesMatch "^(\..*)$">
Require all denied
</FilesMatch>
<DirectoryMatch "^(\..*)$">
Require all denied
</DirectoryMatch>
uj5u.com熱心網友回復:
<Files ".ht*">
在這種情況下,不是.ht*正則運算式(regex)。它是一個“通配符字串”,其中匹配任何單個字符,并匹配任何字符序列。(雖然這也是一個有效的正則運算式 - 一個正則運算式會以不同的方式匹配)。?*
但是下一個呢?
(^\.ht|~$|back|BACK|backup|BACKUP$)
這是一個正則運算式(它不能<Files>像您上面寫的那樣在指令中使用,除非啟用與~引數匹配的正則運算式模式 - 正如您稍后使用的那樣。)
在這個正則運算式中,匹配任何以文字(波浪字符)~$結尾的字串。~這有時用于標記備份檔案。
它也符合...
- 任何開頭的字串
.ht(自然包括.htaccess)。 - 任何包含
backorBACK的字串backup(匹配backup顯然是多余的)。 - 任何以 . 結尾的字串
BACKUP。
因此,這看起來不像你認為它正在做的那樣。
否則接下來會更好
(^\.ht*|back*|BACK*$)
雖然這是一個有效的正則運算式,但您顯然已經恢復到“通配符”模式匹配的混合。請記住,在正則運算式中,*量詞與前一個標記匹配 0 次或更多次。它不匹配“任何字符”,如通配符模式匹配。
這仍然匹配“.htaccess”,但只是因為模式沒有錨定。例如,^\.ht*$(帶有字串結尾錨)將不匹配“.htaccess”。
<Files ~ "\.(gif|jpe?g|png)$">
使用該Files指令,~引數啟用正則運算式模式匹配。(正如您所說。)這與~在正則運算式模式本身內部使用時完全不同。
還有一件事,我應該逃避
.嗎?因為默認 httpd.conf 不這樣做。或者它只是 httpd.conf 和 .htaccess 不同(這對我來說沒有意義)
我覺得你把事情搞混了。在您的第一個示例中,它不是正則運算式,而是“通配符”模式(如上所述)。在這種情況下,.不能被反斜杠轉義。它匹配文字.(點)。.此處沒有特殊含義。僅當您需要匹配正則運算式.中的文字點時才應轉義。
例如,以下是等價的:
# Wild-card string match
<Files ".ht*">
和
# Regex pattern match
<Files ~ "^\.ht">
(但是,最好使用FilesMatch而不是Files ~避免任何混淆。FilesMatch是“較新”的語法。)
httpd.conf和.htaccess在這方面沒有區別。
uj5u.com熱心網友回復:
如有疑問,請閱讀精細手冊。_ _
~啟用正則運算式。沒有它,您只能訪問通配符?和*.
據我所知,Apache 使用正則運算式的 PCRE 風格。
因此,一旦您啟用了正則運算式,~然后使用https://regex101.com/r/lPkMHK/1來測驗您撰寫的正則運算式的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/477152.html
上一篇:就我在react-instantsearch-dom-maps中移動地圖而言,如何更改結果
下一篇:如何使用正則運算式多次匹配組
