我准备将旧的经典ASP网站迁移到新的Django系统。作为移动的一部分,我们必须设置一些旧的URL以指向新的URL。
例如,
http://www.domainname.com/category.asp?categoryid=105
应为301 http://www.domainname.com/some-category/
也许我是正则表达式愚蠢的东西,但是对于这个例子,我已经包含在我的URLconf中了:
(r'^asp/category\.asp\?categoryid=105$', redirect_to, {'url': '/some-category/'}),
我的想法是我必须逃避.
和?
,但出于某种原因,当我去测试时,它不会重定向到/some-category/
,它只是404s输入的网址。
我做错了吗?还有更好的方法吗?
答案 0 :(得分:2)
要详细说明Daniel Roseman's answer,查询字符串不是URL的一部分,因此您可能希望编写一个视图函数,该函数将从查询字符串中获取类别并进行相应的重定向。您可以使用以下网址:
(r'^category\.asp', category_redirect),
视图功能如下:
def category_redirect(request):
if 'categoryid' not in request.GET:
raise Http404
cat_id = request.GET['category']
try:
cat = Category.objects.get(old_id=cat_id)
except Category.DoesNotExist:
raise Http404
else:
return HttpResponsePermanentRedirect('/%s/' % cat.slug)
(当然,改变你自己的品味和需求。)
答案 1 :(得分:0)
?
之后的所有内容都不是网址的一部分。它是GET参数的一部分。