我试图通过做这样的事情来学习重写:
^/blog/install/(.*)$ --> /blog/install/index.php?_p=$1
但是这些重写总是失败,而且很难调查,所以我寻找并找到了rewrite_log on
一个合适的功能来帮助我。我的服务器块中的 error_lognotice
也按照 NGINX 指南设置为级别,但是无论我在哪里放置rewrite_log on
和重新加载,它都不会记录与重写相关的任何内容,只有 nginx/php 错误!
我甚至试图将其设置error_log
为debug
它提供给我的唯一相关信息是以下一行:
2015/12/14 13:46:26 [debug] 17458#0: *4494 http copy filter: 0 "/blog/install/index.php?_p="
2015/12/14 13:46:26 [debug] 17458#0: *4494 http finalize request: 0, "/blog/install/index.php?_p=" a:1, c:1
然而,围绕它的任何内容(包括讨论 SSL 和 HTTP 过滤的内容)都没有提到具体发生了什么_p=
。
我用于重写的一些测试尝试了许多组合:
location /blog/install {
try_files $uri $uri/ @install;
}
location @install {
fastcgi_pass unix:/var/run/php5-fpm-site_mainsite.sock;
fastcgi_param SCRIPT_FILENAME $document_root/blog/install/index.php;
fastcgi_param QUERY_STRING _p=$uri&$args;
include fastcgi_params;
}
或者类似...
location /blog/install {
rewrite ^/blog/install/(.*)$ /blog/install/index.php?_p=$1? last;
}
和所有相关的东西,然而我能得到的最好的东西是一个没有 CSS 的页面(我猜它也在重写非 PHP 文件。。)或一个不会转到任何地方的下一个按钮(它将 /nextpage/ 发送到谁知道的空白处)而且我无法调试任何这些!有什么线索吗?
我已检查过的事情......
/var/log/nginx/errors.log
仅提到当我使用reload
其服务时,nginx 会重新加载nginx -V
节目--with-debug
,如果这很重要耸肩
我当前的 NGINX 配置是:
error_log /home/site_mainsite/log/errorslog.log notice;
rewrite_log on;
我相信是的进行重写, 自从仅有的 /blog/install
将允许其后的任意路径不存在,而 /blog/nonexistentblabla 将给我 404,但没有重写日志。