DocumentRoot
指向仅包含带有RewriteRule
指令的.htaccess的文件夹。
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 :(得分:0)
这条规则:
RewriteRule .. - [G]
410
返回/
,因为在DirectoryIndex
模块之前运行的mod_rewrite
指令在index.html
或index.*
前面附加/
1}}。
这使得..
匹配index.html
的2个字符,然后获得410 Gone
。
如果您通过将此行放在.htaccess
的顶部来禁用此指令,那么410
的{{1}}将会消失:
/