2017-07-17 37 views
1

DocumentRoot指向僅包含帶有RewriteRule指令的.htaccess的文件夾。帶點和請求根的Apache RewriteRule正則表達式

Apache正則表達式中的點字符匹配任何單個字符。

規則RewriteRule a..b - [G]按預期工作:

GET /ab HTTP/1.1 
GET /axb HTTP/1.1 
GET /axxxb HTTP/1.1 
GET /zaxx HTTP/1.1 
404 Not Found - OK 

GET /axxb HTTP/1.1 
GET /zaxxbz HTTP/1.1 
410 Gone - OK 

RewriteRule .. - [G]作品在任何情況下期望太高規則要求時除外「/」:

GET /x HTTP/1.1 
404 Not Found - OK 

GET /xx HTTP/1.1 
GET /xxx HTTP/1.1 
GET /xxxx HTTP/1.1 
410 Gone - OK 

GET/HTTP/1.1 
410 Gone - WRONG! 

爲什麼只包含點的正則表達式不在Apache 2.4中請求「/」時按預期工作?

回答

0

這條規則:

RewriteRule .. - [G] 

返回410對於之前mod_rewrite模塊運行,並在/前追加index.htmlindex.*DirectoryIndex/,因爲指令。

這使得..匹配index.html的2個字符,你會得到410 Gone

如果通過將該線在你.htaccess頂部禁止該指令,然後410會爲/ URI消失:

DirectoryIndex ""