python - 如何以 SEO 友好的方式将 .aspx 页面重定向到 django 站点上的新页面

标签 python django url seo

我正在重新设计一个正在从 ASPX 转换为 Django 的网站。我们想像这样重定向旧网址:

/detail.aspx?ID=123

...到...

/文章/123

问题出在 url 模式匹配上。我想像这样匹配旧网址的模式:

(r'^detail.aspx?ID=(?P\d+)$', 'mygreatview'),

...然后在 View 中执行 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,但这似乎会导致其他网址出现其他问题(在这里挤压气球)。

我错过了什么?我应该使用 Apache 和 mod_rewrite 来处理这种情况吗?

提前致谢。

最佳答案

那不是你的问题。您的问题是查询参数 (?ID=123) 不是 URL 的一部分。您应该只匹配 /detail.aspx/ 并使用 request.GET['ID'] 在 View 中获取参数。

实际上,您根本不应该这样做。这种重定向级别由您的 Web 服务器配置处理得更好,例如使用 Apache 中的 mod_rewrite。无需调用 Django View 的开销来执行此类操作。

关于python - 如何以 SEO 友好的方式将 .aspx 页面重定向到 django 站点上的新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13587164/

相关文章:

python - 通过 __builtins__ 访问内置函数

python - 将 pandas MultiIndex DataFrame 从按行转换为按列

python - 如何从数据框中绘制堆叠条形组

django - 如何从模型表单集中获取模型实例

css - 在 Django 中覆盖 Bootstrap 时出现异常

Java MalformedURLException 被捕获

python - pyspark。生成随机数的转换器始终生成相同的数字

Django:计算数据库中今天日期和日期之间的差异时出现问题

ios - 从暂停状态 iOS 恢复 safari

php - 在 mysql 上使用 AES 加密,最短 URL