Python 没有CSS和JS,当斜杠在末尾时
视图.pyPython 没有CSS和JS,当斜杠在末尾时,python,flask,werkzeug,flask-security,Python,Flask,Werkzeug,Flask Security,视图.py @app.errorhandler(404, strict_slashes=False) def page_not_found(e): return render_template('404.html', e=e) 404.html {% extends 'layouts/layout1.html' %} {% block title %}404 Page Not Found {% endblock title %} {% block content %} &l
@app.errorhandler(404, strict_slashes=False)
def page_not_found(e):
return render_template('404.html', e=e)
404.html
{% extends 'layouts/layout1.html' %}
{% block title %}404 Page Not Found
{% endblock title %}
{% block content %}
<div class="container" >
<h3>Page you are looking for does not exist: {{ e }}</h3>
</div>
{% endblock %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>{% block title %}
{% endblock %}</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/small-business.css" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">
<img src="http://placehold.it/150x50&text=Logo" alt="">
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li>
<a href="/">About</a>
</li>
<li>
<a href="#">Services</a>
</li>
<li>
<a href="#">Contact</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- this is the data with the instruments, I applied on the top of hte website. -->
<div class="container" >
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>
<li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li>
<li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="home">
<ul>
<li><a href="/register">register</a></li>
<li><a href="/admin">admin</a></li>
<li><a href="/categories">Categories</a></li>
<li>much more crap here</li>
</ul>
</div>
<div role="tabpanel" class="tab-pane fade" id="profile">
TAB2
</div>
<div role="tabpanel" class="tab-pane fade" id="messages">
Tab 3
</div>
</div>
</div>
{% block content %}
{% endblock %}
<div class="container">
<!-- Footer -->
<footer>
<div class="row">
<div class="col-lg-8">
<p>Copyright</p>
</div>
</div>
</footer>
</div>
<!-- jQuery -->
<script src="js/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>
{%extends'布局/layout1.html%}
{%block title%}404找不到页面
{%endblock title%}
{%block content%}
您要查找的页面不存在:{{e}
{%endblock%}
layout1.html
{% extends 'layouts/layout1.html' %}
{% block title %}404 Page Not Found
{% endblock title %}
{% block content %}
<div class="container" >
<h3>Page you are looking for does not exist: {{ e }}</h3>
</div>
{% endblock %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>{% block title %}
{% endblock %}</title>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/small-business.css" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Navigation -->
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">
<img src="http://placehold.it/150x50&text=Logo" alt="">
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li>
<a href="/">About</a>
</li>
<li>
<a href="#">Services</a>
</li>
<li>
<a href="#">Contact</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
<!-- this is the data with the instruments, I applied on the top of hte website. -->
<div class="container" >
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>
<li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li>
<li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="home">
<ul>
<li><a href="/register">register</a></li>
<li><a href="/admin">admin</a></li>
<li><a href="/categories">Categories</a></li>
<li>much more crap here</li>
</ul>
</div>
<div role="tabpanel" class="tab-pane fade" id="profile">
TAB2
</div>
<div role="tabpanel" class="tab-pane fade" id="messages">
Tab 3
</div>
</div>
</div>
{% block content %}
{% endblock %}
<div class="container">
<!-- Footer -->
<footer>
<div class="row">
<div class="col-lg-8">
<p>Copyright</p>
</div>
</div>
</footer>
</div>
<!-- jQuery -->
<script src="js/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>
{%block title%}
{%endblock%}
切换导航
-
-
-
- 这里有更多的垃圾
表2
表3
{%block content%}
{%endblock%}
版权所有
当我去
http://127.0.0.1:5000/any_url_not_routed
,如下所示
它像预期的那样返回一个404错误
,但是当我在末尾放一个斜杠时
http://127.0.0.1:5000/any_url_not_routed/
,如下所示
它呈现相同的页面,但没有css和js。
类似的情况也发生在其他页面上,比如/register、/login等等。此外,浏览器在末尾添加了自动斜杠
请告诉我发生了什么事?我可以在这里链接更多的代码。当尾部斜杠缺失时,您的“css/bootstrap.min.css”
会导致“/css/bootstrap.min.css”
,当尾部斜杠存在时,“/any\u url\u not\u routed/css/bootstrap.min.css”
您应该使用绝对路径“/css/bootstrap.min.css”
来引用资源,就像您已经对“/register”
这样的操作所做的那样
您可以通过查看服务器的请求日志来检查这一点的真实性。您的“css/bootstrap.min.css”
在缺少尾随斜杠时会导致“/css/bootstrap.min.css”
,在出现尾随斜杠时会导致“/any\u url\u not\u routed/css/bootstrap.min.css”
您应该使用绝对路径“/css/bootstrap.min.css”
来引用资源,就像您已经对“/register”
这样的操作所做的那样
您可以通过查看服务器的请求日志来检查其真实性。无法从日志中猜到这一点<代码>127.0.0.1---[09/Apr/2016 00:08:30]“GET/rfhdf/css/bootstrap.min.css HTTP/1.1”200-127.0.0.1---[09/Apr/2016 00:08:30]“GET/rfhdf/js/jquery.js HTTP/1.1”200-127.0.0---[09/Apr/2016 00:08:30]“GET/rfhdf/css/small-business.css HTTP/1.1”200-127.0.0.1---[09/Apr/2016 00:08:35]“GET/js/bootstrap.1”2 00-127.0.0.1---[09/Apr/2016 00:32:05]“GET/rfhdf HTTP/1.1”200-127.0.0.1---[09/Apr/2016 00:33:34]“GET/rfhdf/HTTP/1.1”200-127.0.0.1---[09/Apr/2016 00:33:34]“获取/rfhdf/css/bootstrap.min.css HTTP/1。查看路径的前缀是如何加上
/rfhdf/
,而它应该只有/
而不是/rfhdf/
的前缀。是的,我看到了,但这意味着什么?从日志中猜不出<代码>127.0.0.1---[09/Apr/2016 00:08:30]“GET/rfhdf/css/bootstrap.min.css HTTP/1.1”200-127.0.0.1---[09/Apr/2016 00:08:30]“GET/rfhdf/js/jquery.js HTTP/1.1”200-127.0.0---[09/Apr/2016 00:08:30]“GET/rfhdf/css/small-business.css HTTP/1.1”200-127.0.0.1---[09/Apr/2016 00:08:35]“GET/js/bootstrap.1”2 00-127.0.0.1---[09/Apr/2016 00:32:05]“GET/rfhdf HTTP/1.1”200-127.0.0.1---[09/Apr/2016 00:33:34]“GET/rfhdf/HTTP/1.1”200-127.0.0.1---[09/Apr/2016 00:33:34]“GET/rfhdf/css/bootstrap.min.css HTTP/1。查看路径的前缀是如何加上/rfhdf/
,而它应该只有/
而不是/rfhdf/
的前缀。是的,我看到了,但这意味着什么?