Closed zhongxia245 closed 5 years ago
时间:2017-02-23 12:10:35 作者:zhongxia
由于网站的内容都是动态生成的,地址链接也是很有指向性,比如把页面的id保存在地址里面。
http://www.xxx.com/test/demo/show.php?id=1000
这样最终展示给用户是不好的,并且容易被爬虫抓取数据,也不安全。
然后公司就对页面做了简单的静态化处理(伪静态化) 地址变成了
http://www.xxx.com/page/1000.html
说白了,就是把id当成文件名。
但是这样问题就来了, 因为 本来 show.php 文件用到的资源文件都是写成相对路径的,并且资源文件都在 show.php 所在的目录下。
访问伪静态化后生成的HTML文件,那么就存在 加载资源文件路径不对的问题。
# 未伪静态化前 http://www.xxx.com/test/demo/show.php?id=1000 # 资源加载路径 http://www.xxx.com/test/demo/index.css http://www.xxx.com/test/demo/index.js # 伪静态化后 http://www.xxx.com/page/1000.html # 加载的资源文件路径 http://www.xxx.com/page/index.css http://www.xxx.com/page/index.js # Error ,找不到该资源文件。报错
解决方案有两个,把所有的资源文件,从相对路径改成绝对路径(基于根目录的路径也可以)
# 替换掉这种的路径 test/demo/index.css ./test/demo/index.css # 替换成, 从根目录开始算的路径 /test/demo/index.css # 或者, 绝对路径 http://www.xxx.com/test/demo/index.css
如果引入的资源都是在 show.php 页面的目录下。所有资源文件都在一个目录下的话。 那么你就可以考虑树勇 base 标签来实现。
限制条件
如果以上两点满足了,那么我们继续往下看, 看看base怎么用。
show.php
<html> <head> <base href="/test/demo/"/> <link type="stylesheet" href="index.css"/> </head> ... ... </html>
这样加载资源的时候,就会去 /test/demo/index.css 路径来获取。
/test/demo/index.css
base标签放在 head标签 中
一、背景
由于网站的内容都是动态生成的,地址链接也是很有指向性,比如把页面的id保存在地址里面。
这样最终展示给用户是不好的,并且容易被爬虫抓取数据,也不安全。
然后公司就对页面做了简单的静态化处理(伪静态化) 地址变成了
说白了,就是把id当成文件名。
但是这样问题就来了, 因为 本来 show.php 文件用到的资源文件都是写成相对路径的,并且资源文件都在 show.php 所在的目录下。
访问伪静态化后生成的HTML文件,那么就存在 加载资源文件路径不对的问题。
二、如何解决
2.1 资源引用路径从相对路径改成绝对路径
解决方案有两个,把所有的资源文件,从相对路径改成绝对路径(基于根目录的路径也可以)
2.2 HTML的 base标签
如果引入的资源都是在 show.php 页面的目录下。所有资源文件都在一个目录下的话。 那么你就可以考虑树勇 base 标签来实现。
限制条件
如果以上两点满足了,那么我们继续往下看, 看看base怎么用。
show.php
三、 base 标签
将相对路径变成绝对路径
批量设置target=_blank