我正在重新设计一个正在从 ASPX 转换为 django 的网站。我们想像这样重定向旧网址:
/detail.aspx?ID=123
...至...
/文章/123
问题在于 url 模式匹配。我想像这样匹配旧网址的模式:
(r'^detail.aspx?ID=(?P\d+)$', 'mygreatview'),
...并从那里在视图中执行 301 重定向:
def mygreatview(request, url_id):
article = get_object_or_404(Article, url_id=url_id)
url = '/articles/' + article.url_id
return HttpResponsePermanentRedirect(url)
问题是 Django 附加了一个斜杠,所以旧的 url 被转换为:
/detail.aspx/?ID=123
...在它被 urls.py 解释之前。
我尝试设置 APPEND_SLASH = False,但这似乎会导致其他 url 出现其他问题(在此处挤压气球)。
我错过了什么?我应该使用 Apache 和 mod_rewrite 来处理这种情况吗?
提前致谢。