Nginx 有 sub 模块用于替换部分答案。
http://nginx.org/en/docs/http/ngx_http_sub_module.html
它适用于所有答案,包括自动索引。只需检查您的 nginx 是否有此模块(类型为nginx -V),可能您需要nginx-full 包。
location / {
autoindex on;
sub_filter_once on;
sub_filter <head><title> "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><title>";
}
如果您只需要对一个位置(例如 /download/)进行此替换,只需将其放在位置块中即可。
location = /download/ {
autoindex on;
sub_filter_once on;
sub_filter <head><title> "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><title>";
}
= 这里只匹配 /download/,但不匹配 /download/file...
如果您有很多位置并且想将规则保留在一个地方,您可以尝试将 403 错误重定向到指定位置
location @subfilter {
autoindex on;
sub_filter <head><title> "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><title>";
}
location = /files/ {
error_page 403 =200 @subfilter;
}
location = /download/ {
error_page 403 =200 @subfilter;
}
但是子模块仍然很弱,因为您只能使用 一个 sub_filter 指令 =( 可以通过对自身的代理请求进行破解,但这是不好的解决方案。最好使用 3rd 方模块 https://github.com/yaoweibin/ngx_http_substitutions_filter_module
html5,都一样:
sub_filter "<html>\r\n<head><title>" "<!DOCTYPE html>\r\n<html>\r\n<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><title>";