NGINX 为 Xenforo 重写 IP.Board URL

NGINX 为 Xenforo 重写 IP.Board URL

我花了很长时间才让 NGINX 下的重写工作重写旧的 URL 以指向新文件。

XenForo 的论坛提供了此配置:

location /ipb/ {
    if ($uri ~* /(topic|forum|user)/) {
        rewrite ^ /ipb/ips2xf.php? last;
    }

    if ($args ~* (^|&)show(topic|forum|user)=) {
        rewrite ^ /ipb/ips2xf.php? last;
    }

    if ($args ~* ^/(topic|forum|user)/) {
        rewrite ^ /ipb/ips2xf.php? last;
    }
}

但是我的网站不是在目录下运行,而是在子域的根目录下运行。有人告诉我,只需将位置参数更改为“location /”并从重写指令中删除 /ipb/ 即可,但事实并非如此。我已经尝试了大约一百种不同的方法,但在过去两周的尝试后,没有任何进展。

现在,我输入的 URL 都是这样的,比如“http://forums.tvnewstalk.net/index.php?/forum/10-general-tv/“将直接传递到 index.php。我实际上无法证明它正在通过重写规则进行评估,因为无论它看起来如何,它都会按原样将 URL 传递到 index.php。我仔细检查了错误日志和重定向日志,但找不到问题所在。

有什么想法?有什么建议?我对此开始失去理智了。

该子域名的整个配置文件:

server {
listen   80;
server_name beta.tvnewstalk.net

#change your log path as according to your server
access_log  /home/tvnewstalk/logs/access.b.log;
error_log  /home/tvnewstalk/logs/error.b.log;
rewrite_log on;

root    /home/tvnewstalk/www/xf;
index   index.php index.html;

gzip on;
client_max_body_size 30M;

# Main location
location / {
    if ($uri ~* /(topic|forum|user)/) {
        rewrite ^ ips2xf.php? last;
    }

    if ($args ~* (^|&)show(topic|forum|user)=) {
        rewrite ^ ips2xf.php? last;
    }

    if ($args ~* ^/(topic|forum|user)/) {
        rewrite ^ ips2xf.php? last;
    }
}       

location /internal_data/ {
    internal;
}

location /library/ {
    internal;
}

## Static files location
location ~* ^.+.(css|js|jpg|jpeg|gif|png|ico)$ {
    access_log off;
    log_not_found off;
    expires 30d;
}

location ~ \.php$ {
    try_files $uri = 404;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
}

}

相关内容