在 Django 项目中,Django 默认生成的 URL 末尾带斜杠 / ,你可以选择在 URL 尾部带着反斜杠 / ,也可以选择去掉url尾部的斜杠

如果您在 Django 中选择 url上有双斜杠,那么你无需任何设置。

如果您选择在 Django 项目中选择去掉url尾部的斜杠,最好同时设置 301重定向,这样便于SEO优化。

本文将介绍在 Django 中使用 Apache rewrite 模块实现网页 301重定向跳转。

Django去掉url尾部的斜杠 /

在 Django 中去掉url尾部的斜杠只能适用于自己创建的页面,不能适用于管理页面。

在 settings.py 文件中添加如下配置去掉url尾部的斜杠:

1、启用 CommonMiddleware 中间件

MIDDLEWARE = [
    ...
    "django.middleware.common.CommonMiddleware",
        ...

2、生成的页面不添加反斜杠

APPEND_SLASH

3、如果需要特定的页面去掉url尾部的斜杠,请使用修饰符 @no_append_slash

Django中实现 Apache 301重定向

Django 中实现 apache 301重定向需要使用 Apache rewrite 模块。

1、启用 Apache rewrite 模块

根据自己使用的系统定位配置文件的位置,一般为 apache2.confhttpd.conf

去掉 mod_rewrite.so 所在行前面的注释,即可启用模块

2、在 Django 项目的 apache 配置文件或虚拟机中添加如下配置:

  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule "^/(?|(?=sbufolder1/)|(?=sbufolder2/))(.+)??/$" "/$1$2" [L,R=301]

解释说明:

  • 要使用 L Flag,作为最后一条重写规则,终止继续解析

  • 要使用 Flag R=301,标记为301重定向

  • RewriteRule 中使用了正则表达式匹配网站的一级目录,可匹配任意多个,你也可以为一个设置一条规则。

结语

在本文中介绍了如何在 Django 中去掉url尾部的斜杠,再使用 Apache rewrite 模块实现网页 301重定向跳转。