我正在做一些用户可以上传文件,特别是图像(JPG,GIF和PNG)的内容。我做了明显的事情,例如清洁文件名,只允许字母,数字和一些符号,但是我对它的思考越多,我想到的问题就越多。
例如,如果用户上载文件与已经存储的名称相同的文件怎么办?它将覆盖它,所以我考虑将时间戳记附加到文件名的末尾,但这不会对SEO产生负面影响?
在存储用户在文件系统上存储文件,将条目添加到数据库中并优化SEO的图像?>
图像可以匿名上传。
通常,搜索引擎不在乎,只要元数据很好并且文件名包含尽可能靠近左侧的相关信息。
例如,eiffel-tower.jpg,eiffel-tower-01.jpg和eiffel-tower-02736293.jpg不会获得所有不同的SEO分数。
在您的特殊情况下,将" -xx"附加到文件名上,其中xx是同一名称的当前图像 1的当前图像的数量。时间戳将更容易实施,但是数字越少,它看上去越漂亮,搜索引擎和人员。
另一个选项是按日期将其存储到子文件夹中,如/2014/03/eiffel-tower.jpg。同样,如果有人上传了同名的图像,则可以如上所述附加" -xx"。
我的建议是将文件存储到例如"上传"目录中。将" .htaccess"文件放入此目录中:
deny from all
存储的文件只能由时间戳和随机数字命名,例如原始名称的第一个字母。然后,您将文件信息存储在数据库中。
现在,一个用于读取请求的文件的PHP文件,以及一些重写文件的规则,以将文件重定向到该文件的长名。
这有意义吗?
是否可以期望上传具有相同名称的文件会覆盖旧的文件吗?
如果不需要行为(假设您正在执行备份),则如果File_exists()重命名旧文件,然后将新上传写入旧地址。
bulldog.jpg
副本变为:
bulldog.jpg
1bulldog.jpg
或类似。
您可以使用9AJK298.JPG(例如9AJK298.JPG)存储图像。将原始名称,唯一键,扩展名存储在数据库中。
添加一些重写规则和服务器端脚本以模拟
www.example.com/images/9ajk298/bulldog.jpg
通常使用此方法;
1)检查文件是否存在
2)如果存在,则文件名的前缀或后缀...
例如,在WordPress中,如果存在文件,则WP将宽度X添加到图像末端...例如image_name_250x300.jpg
和image_name_500x600.jpg
等...
更新:前缀或后缀对SEO并不重要。Google停下来关注很久以前可以通过网站所有者操纵的东西。