0

我正在将系统从 PHP 迁移到 Python/Django。

从旧网站上,我应该将访问量最大的网址保留一段时间,但我正在尝试,但我没有找到办法。

旧格式是:

detalhes.php?tipo=residuo&residuo_id=320

我已经尝试了以下所有这些网址,但我不断收到 404:

url(r'^detalhes(?P<antigo>[\w]+)$','core.views.anuncio_antigo',name='anuncio-antigo'),
url(r'^detalhes(?P<antigo>[\w_-]+)$','core.views.anuncio_antigo',name='anuncio-antigo'),
url(r'^detalhes\.php\?tipo\=residuo\&residuo_id\=(?P<antigo>[\w_-]+)$','core.views.anuncio_antigo',name='anuncio-antigo'),
url(r'^(?P<antigo>[\w_-]+)$','core.views.anuncio_antigo',name='anuncio-antigo'),

我总是收到这个:

[22/Apr/2013 20:08:58] "GET /detalhes.php?tipo=residuo&residuo_id=58 HTTP/1.1" 404 7099
4

2 回答 2

1

在相同情况下对我有用的解决方案是将 Web 服务器配置为在不同引擎上路由请求。我们使用 nginx 的配置是这样的:

location ~ ^/(django\/adm|someurl|)/.*$ {
    uwsgi_pass unix:/var/www/path/to/uwsgi.sock;
    include uwsgi_params;
    }

location ~ ^/(_.*\.php)$ {
    fastcgi_pass   php_fastcgi;
    fastcgi_param SCRIPT_FILENAME /var/www/path/to/index/php/$1;
    fastcgi_param DOCUMENT_ROOT /var/www/path/to/index/php/$1;
    include fastcgi_params;
}
于 2013-04-22T23:37:56.653 回答
0

做我想做的事情的正确方法是不要使用 URL 调度程序处理查询字符串。而不是,我这样做了:

url(r'^detalhes\.php/$', 'core.views.anuncio_antigo',name='anuncio-antigo'),

现在任何这些 php 文件都会调用我的anuncio_antigo视图。然后在视图中我使用 处理查询字符串request.GET,如下所示:

tipo = request.GET.get('tipo')
residuo_id = request.GET.get('residuo_id')

我认为网址中不可能有问号。

于 2013-04-23T20:17:16.893 回答