微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nginx – 使用短网址时找不到MediaWiki文件:example.jpg

我正在尝试使用Nginx建立一个wiki.

当我使用/wiki/File:image.jpg时,Nginx返回404.
当我使用/index.PHP?title=File:image.jpg时它可以正常工作.

server {
    listen 80;
    listen [::]:80 ipv6only=on;

    root /usr/share/Nginx/mediawiki;
    index index.PHP index.html index.htm;

    ...

    location /wiki/ {
        index index.PHP;
        rewrite ^/wiki/([^?]*)(?:\?(.*))? /index.PHP?title=$1&$2 last;
    }

    location ~* /wiki/images/.*.(html|htm|shtml|PHP)${
        types { }
        default_type text/plain;
    }

    location ~* /wikiimages/ {
        try_files $uri /wiki/index.PHP;
    }

    location ~* \.(js|css|jpg|jpeg|png|gif|ico)${
        try_files $uri /wiki/index.PHP;
        expires max;
        log_not_found off;
    }

    location ~*\.PHP?${
        try_files $uri =404;
    #   # With PHP5-fpm:
        fastcgi_pass unix:/var/run/PHP5-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        include fastcgi_params;
    }

    location /wiki/.*\.PHP?${
        try_files $uri =404;
    #   # With PHP5-fpm:
        fastcgi_pass unix:/var/run/PHP5-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        include fastcgi_params;
    }
}

解决方法:

将error_log级别更改为debug add rewrite log.就像是:

error_log /var/log/Nginx/error.log debug;
rewrite_log on;

有关测试,请查看此处:https://gist.github.com/jmervine/8943627 – 有一个示例配置,允许您自动化测试.使用完整日志,您可以解决问题.

我有这样的事情:

2016/04/21 13:02:10 [debug] 7566#7566: *1 http script regex: "^/wiki/([^?]*)(?:\?(.*))?"
2016/04/21 13:02:10 [notice] 7566#7566: *1 "^/wiki/([^?]*)(?:\?(.*))?" matches "/wiki/File:test.jpg", client: 127.0.0.1, server: , request: "GET /wiki/File:test.jpg HTTP/1.1", host: "localhost"
2016/04/21 13:02:10 [debug] 7566#7566: *1 http script copy: "/index.PHP"
2016/04/21 13:02:10 [debug] 7566#7566: *1 http script args
2016/04/21 13:02:10 [debug] 7566#7566: *1 http script copy: "title="
2016/04/21 13:02:10 [debug] 7566#7566: *1 http script capture: "File:test.jpg"
2016/04/21 13:02:10 [debug] 7566#7566: *1 http script copy: "&"
2016/04/21 13:02:10 [debug] 7566#7566: *1 http script capture: ""
2016/04/21 13:02:10 [debug] 7566#7566: *1 http script regex end
2016/04/21 13:02:10 [notice] 7566#7566: *1 rewritten data: "/index.PHP", args: "title=File:test.jpg&", client: 127.0.0.1, server: _, request: "GET /wiki/File:test.jpg HTTP/1.1", host: "localhost"

看起来你的正则表达式可以更好……我会在今天晚些时候尝试找到更好的东西.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐