发布模块发布文章到网站时总是获取不到目录列表,原因是
软件版本太低 如7.6版本不支持ssl
无论是Apache或者Nginx下开启了强制https
就会导致无法获取到分类目录,下面是解决方法。
方法1:使用火车头采集器最新版本
方法2:修改宝塔站点上配置文件
这里以Nginx为例子
找到
if ($server_port !~ 443){
rewrite ^(/.)$ https://$host$1 permanent;
}
改成
set $flag 0;
if ($server_port !~ 443) {
set $flag “${flag}1”;
}
if ($request_uri !~ “Locoy.php”){
set $flag “${flag}2”;
}
if ($flag = “012”){
rewrite ^(.)$ https://$host$1 permanent;
}
这段代码是 Nginx 配置文件 中的一段规则,主要用于实现 HTTP 到 HTTPS 的重定向,同时排除某些特定条件。下面是对这段代码的详细解释:
代码功能
设置变量 $flag:
set $flag 0;:初始化变量 $flag,默认值为 0。
检查服务器端口:
if ($server_port !~ 443):如果请求的端口不是 443(即不是 HTTPS 请求),则将 $flag 的值追加 1。
例如,如果 $flag 初始为 0,经过这一步后变为 01。
检查请求路径:
if ($request_uri !~ “Locoy.php”):如果请求的 URI 不包含 Locoy.php,则将 $flag 的值追加 2。
例如,如果 $flag 是 01,经过这一步后变为 012。
判断并重定向:
if ($flag = “012”):如果 $flag 的值等于 012,则执行重定向。
rewrite ^(.)$ https://$host$1 permanent;:将当前请求重定向到 HTTPS 版本,并保留原始路径。permanent 表示永久重定向(HTTP 状态码 301)。
代码逻辑总结
这段代码的目的是将 非 HTTPS 请求 重定向到 HTTPS,但排除对 Locoy.php 的请求。
具体逻辑如下:
如果请求的端口不是 443(即不是 HTTPS),且请求的 URI 不是 Locoy.php,则触发重定向。
如果请求的 URI 是 Locoy.php,则不进行重定向。
# 重定向非 Locoy.php 的请求到 HTTPS
location / {
if ($request_uri !~ “Locoy.php”) {
return 301 https://$host$request_uri;
}
}
# 处理 Locoy.php 的请求
location = /Locoy.php {
# 处理逻辑
}
}
使用 map 指令:如果需要更复杂的条件判断,可以使用 map 指令来替代 if。
总结
这段代码的核心功能是将非 HTTPS 请求重定向到 HTTPS,但排除对 Locoy.php 的请求。通过设置变量 $flag 并逐步追加值,最终判断是否满足重定向条件。
虽然功能实现正确,但在实际使用中建议优化代码结构以提高性能。
评论抢沙发