springboot 简单变化直接定向到static静态页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 简单变化直接定向到static静态页面相关的知识,希望对你有一定的参考价值。

参考技术A 在用springboot的时候,默认controller层访问到template下的动态页面,但有时候又想直接访问static下的静态页面
默认是这样请求的

上面请求的是动态页面,那如果需要请求到static页面,用下面重定向方式就可以:

此时请求的路径为:static/sb-admin-2/index.html页面,这样可以实现动态和静态页面的轻松选择

直接从 django 中的 urls.py 重定向到命名的 url 模式?

【中文标题】直接从 django 中的 urls.py 重定向到命名的 url 模式?【英文标题】:Redirect to named url pattern directly from urls.py in django? 【发布时间】:2013-03-20 08:18:22 【问题描述】:

在 Django 中,如何直接从 urls.py 进行简单的重定向?自然我是一个组织良好的人,喜欢 DRY 原则,所以我想根据它的命名 url 模式来获取目标,而不是硬编码 url。

【问题讨论】:

【参考方案1】:

如果你使用的是 Django 1.4 或 1.5,你可以这样做:

from django.core.urlresolvers import reverse_lazy
from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^some-page/$', RedirectView.as_view(url=reverse_lazy('my_named_pattern'), permanent=False)),
    ...

如果你使用的是 Django 1.6 或更高版本,你可以这样做:

from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
    ...

在 Django 1.9 中,permanent 的默认值已从 True 更改为 False。因此,如果您不指定 permanent 关键字参数,您可能会看到以下警告:

RemovedInDjango19警告:在 Django 1.9 中,“RedirectView.permanent”的默认值将从 True 更改为 False。设置一个显式值以消除此警告。

【讨论】:

请注意,请记住 RedirectView 默认设置为 Permanent=True。 您可以重定向所有内容!像这样:(r'^.*/$', RedirectView.as_view(url='http://newurl.com')), RedirectView 在 Django 1.9 中默认设置为 Permanent=False。 有人能解释一下上面例子中的“my_named_pa​​ttern”是什么吗? pattern_name 参数传递给RedirectView 在调用时使用给定的模式名称为您执行反向操作。其他useful parameters include permanent and query_string.【参考方案2】:

这对我有用。

from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^some-page/$', RedirectView.as_view(url='/')),
    ...

在上面的例子中'/' 表示它将重定向到索引页面, 您还可以在其中添加任何 url 模式。

【讨论】:

请注意,请记住 RedirectView 在旧版本的 Django 中默认为 permanent=True,在 Django >= 1.9 版本中默认为 permanent=False【参考方案3】:

django v2+

from django.contrib import admin
from django.shortcuts import redirect
from django.urls import path, include


urlpatterns = [
    # this example uses named URL 'hola-home' from app named hola
    # for more redirect's usage options: https://docs.djangoproject.com/en/2.1/topics/http/shortcuts/
    path('', lambda request: redirect('hola/', permanent=False)),
    path('hola/', include("hola.urls")),
    path('admin/', admin.site.urls),
]

【讨论】:

@Ali 永久重定向通常有 HTTP 代码 301,临时重定向通常有代码 302。永久重定向用于通知浏览器网站的结构变化。临时重定向用于指示在动态服务器端操作(如登录)之后显示的新页面。根据文档permanent=False 是默认值。更多详情请阅读:docs.djangoproject.com/en/2.1/topics/http/shortcuts/#redirectdeveloper.mozilla.org/en-US/docs/Web/HTTP/…【参考方案4】:

如果你不支持 RedirectView,旧版本的 django 支持这种方式

在view.py中

def url_redirect(request):
    return HttpResponseRedirect("/new_url/")

在 url.py 中

url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),

您可以使用HttpResponsePermanentRedirect使其永久化

【讨论】:

【参考方案5】:

我试图将所有 404 重定向到主页,但效果很好:

from django.views.generic import RedirectView
...
under urlpatterns, added:
    url(r'^.*/$', RedirectView.as_view(url='/home/')),
    url(r'^$', RedirectView.as_view(url='/home/')),

【讨论】:

【参考方案6】:

您可以直接在 urls.py 上执行以下操作:

url(r'^story/(?P<pk>\d+)/',
        lambda request, pk: HttpResponsePermanentRedirect('/new_story/pk'.format(pk=pk)))

只需确保您准备好接收重定向的新 URL! 另外,请注意重定向的类型,在我使用 Permanent Redirect

的示例中

【讨论】:

以上是关于springboot 简单变化直接定向到static静态页面的主要内容,如果未能解决你的问题,请参考以下文章

Springboot以Tomcat为容器实现http重定向到https的两种方式

SpringBoot系列: url重定向和转发

SpringBoot系列教程web篇之重定向

springboot 开启https与http共存

nginx开启ssl并把http重定向到https的两种方式

nginx开启ssl并把http重定向到https的两种方式