Django 使用 Apache rewrite 模块实现网页301重定向跳转
• 2024-03-26 • 文章类别: 框架 & CMS • 阅读量:226
在 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.conf
或 httpd.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重定向跳转。
0 评论