Python Django URL regex支持旧php页面
我正在将一个系统从PHP迁移到Python/Django 从旧网站我应该保留访问量最大的URL一段时间,但我正在尝试,我没有找到办法 旧格式为:Python Django URL regex支持旧php页面,python,regex,django,python-2.7,django-urls,Python,Regex,Django,Python 2.7,Django Urls,我正在将一个系统从PHP迁移到Python/Django 从旧网站我应该保留访问量最大的URL一段时间,但我正在尝试,我没有找到办法 旧格式为: detalhes.php?tipo=residuo&residuo_id=320 我尝试了下面所有这些URL,但我一直得到404: url(r'^detalhes(?P<antigo>[\w]+)$','core.views.anuncio_antigo',name='anuncio-antigo'), url(r'^detalh
detalhes.php?tipo=residuo&residuo_id=320
我尝试了下面所有这些URL,但我一直得到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'),
在同样的情况下,对我有效的解决方案是将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;
}
tipo = request.GET.get('tipo')
residuo_id = request.GET.get('residuo_id')
正确的方法是不使用URL调度程序处理查询字符串。相反,我做了以下工作:
url(r'^detalhes\.php/$', 'core.views.anuncio_antigo',name='anuncio-antigo'),
所有这些php文件现在都将调用我的anuncio\u antigo
视图。然后在视图中,我使用请求处理查询字符串。GET
,如下所示:
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;
}
tipo = request.GET.get('tipo')
residuo_id = request.GET.get('residuo_id')
我认为url中不可能有问号。谢谢singer,但我不想再使用php了,我有新的模型和视图来处理旧的url。是什么阻止你使用web服务器来完成此任务?简单的apache重写规则或nginx位置将完成这项工作。管理这类问题是Web服务器的责任,必须有理由使用框架处理此URL。感谢您的回答,但我需要使用django来完成此操作,尽管有php扩展,但我有新的模型和视图来处理旧页面。