我正在尝试在我的 Nginx 服务器上安装 thebuggenie。不幸的是,它位于一个子目录中(我对此无能为力),并且对其所有 URL 都使用 apache 重写。当我将所有内容从子目录中移出后,我取得了一些成功,但不幸的是,主(根)目录中有一些它需要的东西。无论如何,我有它提供的 .htaccess 文件,我需要知道如何将重写转换为 nginx 重写。我的配置文件在这里:
http://paste-bin.com/view/eb48c716
我认为主要问题是 RewriteBase......
抱歉,我目前无法添加超过 1 个 URL,因此无法将它们合并在一起。
答案1
我知道这个问题已经很老了,但是找到了一个针对 thebuggenie 3.1.4 与 nginx 1.0.6 一起运行的解决方案:
server {
server_name site.com;
root /var/www/site/public_html/thebuggenie;
large_client_header_buffers 4 8k;
index index.php index.html;
location ~ \..*/.*\.php$ { return 403; }
location ~ \.php {
#add fastcgi_param values to suit environment
fastcgi_pass 127.0.0.1:9000;
}
location ~ /(?<suburi>.*){
set $suburi $1;
try_files $uri $uri/ /index.php?url=$suburi&$args;
}
}
一些注释
根设置 - 虽然您可以在 /var/www/site/public_html/ 中提取并安装,但程序希望站点根目录位于“thebuggenie”目录中。
默认位置块位置 ~ /(?...需要遵循 php fastcgi 块。
如果有人有进一步的增强/更优化的方法,我很乐意看到它们。
答案2
为了完成 jimg 的回答,如果您的文档根目录指向 thebuggenie 安装目录(因此您可以简单地指向http://<your-server>/
),则适用于 nginx 的正则表达式是:
location ~ /(.*) {
try_files $uri $uri/ /index.php?url=$1&$args;
}
set $suburi $1;
如果愿意,您仍然可以使用,但即使在 jimg 的示例中,您也可以$1
直接使用。
答案3
听起来这个软件的设计严重依赖 Apache。对于这个网站,我会在 Apache 前面使用 nginx。将 Apache 放在 8080 localhost 或类似的东西上。您仍然可以获得 nginx 对静态文件的好处,而不必重写所有规则。否则我会向 thebuggenie 抱怨,让他们为您翻译他们的 Apache 重写。这太糟糕了。