Nginx,错误请求和 URL 中的百分比

Nginx,错误请求和 URL 中的百分比

我有一个这样的网址:“mydomain.com/dictionary/Elastizit%E4t.htm”。

我知道这个 URL 很糟糕,我正在迁移一个非常老旧的网站,出于 SEO 原因,我们需要将旧 URL 重定向到新 URL。因此,目前我有大约 14000 个这样的 URL,我需要将它们重定向到它们的新 URL,或者遵循我的 django/python 网络服务器中定义的一些重定向规则。

如果该 URL 命中我的 Python 应用程序,我可以像这样处理它:

>>> from urllib.parse import unquote
>>> unquote('Elastizit%E4t.htm', encoding='latin')
'Elastizität.htm'

但是,nginx 本身出现 400 Bad Request 错误。

我的 Nginx 配置非常简单:

server {
    listen 80;
    server_name mydomain.com;
    client_max_body_size 10M;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /srv/mydomain.com/shared/public;
    }

    location / {
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;

        include proxy_params;
        proxy_pass http://unix:/srv/mydomain.com/current/gunicorn.sock;
    }
}

对我来说,重要的是网络服务器本身采用 utf-8,我不希望将 iso-8859-1 和类似字符作为我的默认编码。

答案1

事实证明这是大多数 Python 框架中的一个错误,又名https://code.djangoproject.com/ticket/25623https://github.com/Pylons/pyramid/issues/2047

相关内容