技术

网站图标无法正常显示的解决方案

问题出现的情况
在最初创建网站时,我出现了这样的一个问题:网站的所有图标都是没有办法正常显示的,全都被一个个方块所代替,很显然这些文件都没有正常被加载出来。


随后我打开了控制台,发现了如下的错误提示:

 Failed to load resource: net::ERR_FAILED
vanger.top/:1  Access to font at 'http://120.46.49.228/wp-content/themes/ashe/assets/fonts/fontello.woff2?5381655' from origin 'http://vanger.top' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
fontello.woff2:1 

这是跨域资源共享 (CORS)出现了问题。
说白了,就是原本应该从网站访问的文件被配置成了从ip地址访问,被检测到两者不一致,从而被禁止获取。

解决方案
我们有两个思路:一个是设法让跨域资源访问生效,另一个是直接想办法让访问变得一致,这样CORS检查就会通过。后者应该是比较简单的方法,因为DNS可以直接把在资源请求时的域名解析为我们的服务器的ip地址,而DNS解析服务都是由云服务商提供的,不会出现什么差错,同时我们在后续更换服务器,做网站迁移的时候不用再更改这些设置了,直接拷贝文件之后更改DNS解析就可以了。

WordPress可以对对应的地址进行一键部署更改。在Wordpress和站点URL全部更改为目标的网站站点(例如这个网站是vanger.top)。保存,重新登陆后一切就都显示正常了。

还有问题?
这下难办了。我上面的这个情况是:通过ip地址访问的时候都是可以正常显示的,但是解析到域名后就出现了问题。如果在最开始的时候就没有办法访问,那就要考虑nginx的配置问题了。
下面是配置的方式,可以检查以下:

我的原本的location地区的配置是这样的:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /\.
        {
            deny all;
        }

接下来添加这样一条规则:

location ~* \.(ttf|ttc|otf|eot|woff|woff2|svg|font.css)$ {
    add_header Access-Control-Allow-Origin "*";
}

随后保存,进入终端管理员,执行下面的linux命令:

sudo nginx -t    //检查语法错误,如果有就看看打没打错
sudo systemctl reload nginx   //重启nginx服务

接下来的问题
接下来就不要再去ip地址登录Wordpress的后台了。直接用域名/wp-admin/进入Wordpress的后台。
当然ip地址的后台也可以访问,但是各种功能都会失效,预览后会提示以下信息:
Non-existent changeset UUID.
或者说,出现上面的提示,就要查看一下是不是用的在Wordpress里面写的Wordpress和站点URL来访问的站点后台了。

谢谢您查看我的文章。如果哪里有错误,或者想讨论问题,欢迎在评论里写出来。

留言

您的邮箱地址不会被公开。 必填项已用 * 标注