赛斯叔叔 - SAIS.IO

赛斯叔叔

修复在 Nginx 下 Typecho 伪静态对反向代理的无效问题

27
2024-03-13

如果您在 Typecho 启用了伪静态,并且在 Nginx 环境下配置了反向代理但不起作用,您可以尝试以下方法来解决这个问题。

起因

伪静态规则的优先级高于反向代理,因此网站程序的伪静态规则会直接拦截所有匹配的请求。

解决

为 Typecho 添加伪静态规则时,可以考虑添加一个判断条件,以便忽略需要进行反向代理的目录。

Typecho 默认的伪静态规则

if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php$1 last;
}

若需忽略 test 目录的伪静态规则,可参照以下步骤进行编写。

if (!-e $request_filename) {
    rewrite ^/(?!test)(.*)$ /index.php$1 last;
}

if (!-e $request_filename) {
    rewrite ^(?!/test/)(.*)$ /index.php$1 last;
}

在应用之后,Typecho的伪静态规则不再对test目录产生影响,同时,针对test目录的反向代理也被忽视了。😊