人们不能低估视觉效果在商业和数字营销中的重要作用。特别是图像具有激发、参与、传达信息的力量,并最终让人们留在您的网站并进一步探索它。但图片不仅有利于品牌参与,而且也是一个重要的网站排名因素。因此,不用说,如果您的某个页面上有一个损坏的图像,这对您网站的整体声誉来说不是好消息。
为了防止遇到此类问题,我们决定讨论几种方法,您可以在WordPress网站上查找和修复损坏的图像。我们还将解释什么是损坏的图像,并讨论为什么解决此问题如此重要,因此请务必继续阅读:
什么是损坏的图像,为什么修复它如此重要?
简而言之,损坏的图像表示由于某种原因导致图像不再可用的链接。通常,人们在单击此损坏的图像链接时看到的是404错误和/或普遍识别的损坏图像符号。
正如我们在开始时已经建议的那样,图像在增强网站的整体用户体验和参与度方面起着至关重要的作用。也就是说,当用户希望在您的网站上找到图像并获得损坏的图像时,他们肯定会被体验所推迟。此外,根据图像的整体用途和您拥有的网站类型(例如,如果您有一个基于图像的投资组合网站或一个也依赖于各种产品图像的电子商务平台),他们甚至可能最终完全放弃您的网站,这只会对您的销售和转化产生不良反映。因此,损坏的图像会对人们的信任产生负面影响,自然会损害您网站的整体信誉。
用户不仅不喜欢图像损坏的网站,而且搜索引擎也是如此。如果Googlebot发现太多损坏的图像链接,它可能会将此类网站标记为不可靠,并且此类网站通常倾向于在SERP中排名较低。
无论如何,您的网站无法加载图像是一个需要识别和修复的严重问题——我们将在一分钟内向您展示如何做到这一点。
使用插件检测WordPress中的损坏图像
您可以使用各种工具来检测WordPress网站上的损坏图像。例如,诸如断开链接检查器之类的插件就是这样一种工具。安装此插件后,您可以检查网站任何页面上的所有死链接或断开的链接,包括损坏图像的链接。
虽然该插件的免费版本允许您通过手动扫描检测问题,但也有具有更高级功能的高级版本。如果升级到高级版,则可以利用对站点执行所谓的深度扫描的功能。您甚至可以选择修复和编辑有问题的链接。
安装并激活插件后,转到“断开的链接检查器”页面(管理仪表板中提供了同名的链接),然后选择“断开的链接扫描”选项卡。然后,单击开始新扫描。
该插件将立即开始扫描您网站上的任何断开的链接,显示进度条并通知您找到的帖子和页面总数、到目前为止扫描的链接数量以及断开的链接数量以及其他数据。换句话说,即使扫描仍在进行中,您也可以查看报告。总而言之,链接扫描过程本身应该需要几分钟。
扫描完成后,您将能够访问断开的链接页面,并查看您可以采取哪些措施来修复它。
现在,在我们告诉您如何修复损坏的图像之前,我们将首先列出此问题可能发生的一些原因。以下是您网站上图片损坏的一些可能原因:
-
图像文件位置的路径不正确
-
损坏的图像文件
-
图像格式错误(例如,图像文件类型.jpg,但在图像代码中标识为.png)
-
映像名称中的更改
-
从服务器中删除的文件(例如,在站点迁移的情况下)。
您可以采取几种不同的方法来解决WordPress网站上图像损坏的问题。例如,您可以简单地完全删除有故障的图像或尝试重命名和/或恢复它们。我们建议您仅在您的网站或业务依赖于高质量图片时才尝试恢复图片,因此始终正确显示所有视觉效果非常重要。
首先,当您在网站上注册损坏的图像时,您应该找到或更确切地说,定义其路径。这可以通过使用浏览器的检查元素工具轻松完成。只需将鼠标悬停在损坏的图像上并右键单击它即可。然后,选择“检查”。
检查工具中显示的 URL 应该是图像的位置。您应该复制此位置并将其粘贴到您选择的文本编辑器中。
知道图像位置及其名称后,您应该查看图片是否仍然存在于该位置。您可以使用cPanel(或FTP)并转到在检查中找到的目录来执行此操作。
有关如何查找和访问图像的更多信息,我们强烈建议您查看我们的综合文章,其中讨论了WordPress在您的网站上存储图像的位置。
如果您的图片不在应有的位置,您可以尝试再次将其放置在那里,或者重命名图片标签,使其与其正确的位置相匹配。
如果您的WordPress目录中的图像文件的路径包含与浏览器中的URL相同的URL,并且您仍然遇到问题,那么您的图像文件很有可能已损坏。我们建议您检查图像是否显示在浏览器或本地计算机上。如果没有,您应该将图片重新上传到您的网站。
最后,如果所有其他方法都失败了,您可以尝试回滚到以前备份的网站版本,看看是否可以修复损坏的图像问题。
此方案使用插件,在给大家一个适合几十万文章的方案,速度很快:
直接从数据库解析文章图片,判断文章图片是否存在,存在则忽略,不存在则去掉。
#!/usr/bin/python3 # -*- coding: utf-8 -*- import records import requests from bs4 import BeautifulSoup import logging import time import os class Logger(object): def __init__(self,): #self.name = name #①创建一个记录器 self.logger = logging.getLogger() self.logger.setLevel("INFO") # 设置日志级别为 'level',即只有日志级别大于等于'level'的日志才会输出 self.formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") #创建formatter #②创建屏幕-输出到控制台,设置输出等级 self.streamHandler = logging.StreamHandler() self.streamHandler.setLevel("DEBUG") #③创建log文件,设置输出等级 PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 根目录 time_now = time.strftime('%Y_%m%d_%H', time.localtime()) + '.log' # log文件命名:2022_0402_21.log self.fileHandler = logging.FileHandler(os.path.join(PROJECT_ROOT, "Log", time_now), 'a', encoding='utf-8') self.fileHandler.setLevel("DEBUG") #④用formatter渲染这两个Handler self.streamHandler.setFormatter(self.formatter) self.fileHandler.setFormatter(self.formatter) #⑤将这两个Handler加入logger内 self.logger.addHandler(self.streamHandler) self.logger.addHandler(self.fileHandler) def getLogger(self): return self.logger logger = Logger().getLogger() #调用logger接口 def procHtml(conten): soup = BeautifulSoup(conten, 'html.parser') imgs = soup.select('img') for i in imgs: logger.info("正在处理") try: url = i['src'] except: continue if check_img(url)!=True: try: i.replaceWith(i['alt']) except Exception as e: print(e) return soup def check_img(img): header ={ "User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1" } if 'http' not in img: img = 'https://www.u9seo.com'+img try: res = requests.get(url=img,headers=header,timeout=6) if res.status_code !=200: logger.info('错误图片:{}'.format(img)) return False else: return True except: logger.info('错误图片:{}'.format(img)) return False def chuli(db,table): logger.info(f"正在处理数据表{table}") sql = f"SELECT * FROM {table} WHERE post_status = 'publish';" #sql = "SELECT * FROM wp_posts WHERE post_status = 'publish' ORDER BY view_count desc LIMIT 1, 5000" try: data = db.query(sql) data = data.all(as_dict=True) except: return for i in data: #print(i) id = i['ID'] logger.info(f"正在处理数据表{table}") logger.info(f"当前处理{id}") content = procHtml(i['post_content']) sql = f"UPDATE {table} SET `post_content` ='{content}' WHERE `ID`={id};" #print(sql) try: db.query(sql) except Exception as e: print(e) def data_load(): db_name ='' #数据库名 db_user ='' #用户名 db_password = '' #用户密码 db_link = "mysql+pymysql://{1}:{2}@localhost/{0}?charset=utf8".format(db_name,db_user,db_password) db = records.Database(db_link) # tables = ['wp_posts', 'wp_1_posts', 'wp_2_posts', 'wp_3_posts', 'wp_4_posts', 'wp_5_posts', 'wp_6_posts', 'wp_7_posts', 'wp_8_posts', 'wp_9_posts', 'wp_10_posts', 'wp_11_posts'] # for i in tables: chuli(db,table='wp_2_posts') if __name__ == "__main__":#检测日志打印效果 data_load()