EHFS: Extra HTTP File Server
EHFS(Extra HTTP File Server) 是基于命令行的HTTP文件共享服务器。
Extra HTTP File Server基于Go HTTP File Server,附带额外功能。 它为简单静态网站提供了常用的功能。
新增选项
--ip-allow <IP>|<network/prefix> ... --ip-allow-file <file> ... 只允许来自指定的IP或网络的客户端访问。 不匹配的客户端IP会被拒绝访问。 --ip-deny <IP>|<network/prefix> ... --ip-deny-file <file> ... 只拒绝来自指定的IP或网络的客户端访问。 不匹配的客户端IP会被允许访问。 --rewrite-host <分隔符><match><分隔符><replace> 如果请求的host+URL(“host[:port]/request/path?param=value”的形式)匹配正则表达式`match`, 将其重写为另一种形式。 重写的目标由`replace`指定。 使用`$0`表示`match`的完整匹配。 使用`$1`-`$9`来表示`match`中的子匹配。 --rewrite-host-post <分隔符><match><分隔符><replace> 与--rewrite-host相似,但在重定向无匹配后执行。 --rewrite-host-end <分隔符><match><分隔符><replace> 与--rewrite-host-post相似,但匹配后跳过后续处理流程。 --rewrite <分隔符><match><分隔符><replace> 如果请求的URL(“/request/path?param=value”的形式)匹配正则表达式`match`, 将其重写为另一种形式。 重写的目标由`replace`指定。 使用`$0`表示`match`的完整匹配。 使用`$1`-`$9`来表示`match`中的子匹配。 --rewrite-post <分隔符><match><分隔符><replace> 与--rewrite相似,但在重定向无匹配后执行。 --rewrite-end <分隔符><match><分隔符><replace> 与--rewrite-post相似,但匹配后跳过后续处理流程。 --redirect <分隔符><match><分隔符><replace>[<separator><status-code>] 当请求的URL(“/request/path?param=value”的形式)匹配正则表达式`match`时, 执行HTTP重定向。 重定向目标由`replace`指定。 使用`$0`表示`match`的完整匹配。 使用`$1`-`$9`来表示`match`中的子匹配。 可选的`status_code`指定HTTP重定向代码。 默认为301。 --proxy <分隔符><match><分隔符><replace> 如果请求的URL(“/request/path?param=value”的形式)匹配正则表达式`match`, 将代理请求另一个目标。 代理的目标由`replace`指定。 使用`$0`表示`match`的完整匹配。 使用`$1`-`$9`来表示`match`中的子匹配。 --return <分隔符><match><分隔符><status-code> 当请求的URL(“/request/path?param=value”的形式)匹配正则表达式`match`时, 立即返回状态码`status-code`并停止处理。 --to-status <分隔符><match><分隔符><status-code> 与--return类似,但在ghfs内部处理流程完成后执行。 --status-page <分隔符><status-code><分隔符><fs-path> 当响应状态码为`status-code`时,用文件`fs-path`的内容来响应。 --header-add <分隔符><match><分隔符><name><分隔符><value> --header-set <分隔符><match><分隔符><name><分隔符><value> 当请求的URL(“/request/path?param=value”的形式)匹配正则表达式`match`时, 添加或设置响应头。
举例
根据redirect参数执行重定向:
# 当请求 http://localhost:8080/redirect/www.example.com时,重定向到https://www.example.com
ehfs -l 8080 -r /path/to/share --redirect '#/redirect/(.*)#https://$1'
访问静态页面URL无须包含.html后缀:
- 将包含.html后缀的URL重定向到不包含的
- 重写不包含.html后缀的URL至带有后缀
ehfs -l 8080 -r /path/to/share --redirect '#(.*)\.html#$1' --rewrite-post '#^.*/[^/.]+$#$0.html'
指定404状态页文件:
ehfs -l 8080 -r /path/to/share --status-page '#404#/path/to/404/file'
拒绝显示关键性文件或目录,返回403状态:
ehfs -l 8080 -r /path/to/share --return '#.git|.htaccess#403'
下载
操作系统 | 64位 | 32位 |
---|---|---|
Windows 10+,x86架构 | 下载 下载(支持AVX2的处理器) | |
Windows 10+,ARM架构 | 下载 | 下载 |
Linux,x86架构,内核版本≥2.6.32 | 下载 下载(支持AVX2的处理器) | |
Linux,ARM架构,内核版本≥2.6.32 | 下载 | 下载 |
Linux,RISC-V架构,内核版本≥2.6.32 | 下载 | |
Linux,Loong架构,内核版本≥5.19 | 下载 | |
OS X,x86架构,Sierra 10.12+ | 下载 | |
OS X,ARM架构,Sierra 10.12+ | 下载 |
源代码
EHFS使用Go语言开发,以MIT许可发布。