本文的目的是介绍关于SEO技术规范的一些说明的详细情况,特别关注关于seo技术规范的一些说明怎么写的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解关于SEO技术规范的
本文的目的是介绍关于SEO技术规范的一些说明的详细情况,特别关注关于seo技术规范的一些说明怎么写的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解关于SEO技术规范的一些说明的机会,同时也不会遗漏关于Go 的一些说明、iOS关于苹果开发者账号及证书的一些说明、PHP中对变量的一些说明、php关于代码规范的一些小总结的知识。
本文目录一览:关于SEO技术规范的一些说明(关于seo技术规范的一些说明怎么写)
通常博客帖子的留言比较泛泛而谈,没那么具体,也比较少需要回复。上星期的帖子《技术部门SEO规范》则有不少对其中一些技术点很具体的疑问,所以写个帖子回复一下。
作为SEO技术规范,只是列出了应该做什么和不应该做什么,没有解释原因,所以确实会使有些读者不明所以。有的地方是个人偏好,或者有不同解决方法,只是选择其一,不一定要按我写的规范这样处理。重要的是,选择一种处理方法,就要保持一致性,各个地方都要遵循同样原则,所有技术人员都要用同样方法,不要各行其是,结果出现矛盾的处理方法。
SEO技术规范问题解答
静静的民心河问:
Zac老师做了这么详细的规范,这些一般都适用于大公司的大型网站吧?
一些小公司的感觉很多都实现不了呀!
小公司的网站,有什么更好的规范建议吗?
答:
和网站大小没关系,规范是一样的。其中并没有什么小公司不能实现的,实际上,小公司没那么多层级、条条框框,更容易实现。技术上,真没有什么什么能称得上是技术的东西,都是最基本的。
乐梵问:
栏目页面翻页Title缺省格式:二级栏目名称 – 一级栏目名称 – 网站名称 – 第X页
不应该为
栏目页面翻页Title缺省格式:二级栏目名称 – 第X页 – 一级栏目名称 – 网站名称
么?
答:
都行。title太长的话,去掉一级栏目名称也可。重要的是带上页码,使标题有所区别,让用户和搜索引擎都知道自己在哪。
Betty问:
「站内搜索结果页面使用robots文件禁止搜索引擎抓取。」
请教这是为什么呢?是防止重复内容吗?那种文章列表翻页页面好像差不多呀,为什么就可以呢
我自己上网时候经常会搜到这种结果页面,感觉还蛮能带来流量的
答:
搜索引擎并不喜欢收录站内搜索结果页面。原因很多,比如你说的重复内容问题。还有用户体验问题,搜索引擎希望把用户直接带到最终回答查询的页面,而不是另一个搜索引擎页面。还有内容质量问题,一些搜索结果页面根本就是空的,没有符合条件的搜索结果。
另外,如另一位读者sindy回答的,有时候搜索结果页面会被黑帽利用,搜索一些敏感关键词,让搜索引擎收录结果页面,或者做自己的广告,或者陷害竞争对手等等。具体例子可以看以前的百度处理垃圾外链问题帖子。
文章列表是网站必须的内部结构,没有列表,用户和搜索引擎都无法访问最终页面。形式差不多,实质是不同的。
你在网上搜到的这种结果页面,通常是以聚合或tag页面显示展现的,实质确实就是搜索结果页面。但这种页面的使用首先要有海量内容为基础,词库的选择、搜索结果质量的控制等都是要谨慎计划、监控和调整的。所以,不是不能用,是技术部门不能没有和SEO部门商议就随意使用,或者说,缺省设置是,先别用,和SEO部门商议出好的方案,再用。
Cici问:
栏目页面翻页Title缺省格式:二级栏目名称 – 一级栏目名称 – 网站名称 – 第X页
翻页格式不太了解是什么意思呢?
其次,关于页面title是否要与这个产品页面的名称一致问过几个老师,有的说最好不一致,有的说一定要一致。我看到Zac说产品页面title就是产品名称 – 网站名称,是否意味着,页面title也要与产品名称保持一致?
答:
翻页指的是,每个栏目,比如显示20篇文章,栏目下多于20篇,页面下边肯定要有下一页、第二页、第三页之类的链接,那些页面就是翻页。从第二页开始,翻页页面的标题要带上页码。
不一定一致。所以系统要有人工改写title的功能。但缺省的设置通常是title就是产品名称,这个最容易实现,后期再挑重要页面人工改写。
梦站博客问:
URL结尾以html结尾和非html结尾有什么区别么?搜索引擎对结尾有什么要求么?
答:
没区别,搜索引擎也没有要求或偏好。之所以建议目录以斜杠 / 结尾,产品、文章以html结尾(或者php结尾,或者htm,都一样),只是让自己和用户一看URL就知道这是个目录还是产品页面。有的网站和CMS系统产品/文章页面也是以斜杠结尾的,对搜索引擎没什么区别。
robin.wong问:
“中文网站,产品/文章页面文件名使用数字/字母编号” 比较疑惑:您自己的此页面的url命名没用数字或者字母啊?
答:
是的,因为我的WordPress设置选择的是自定义帖子URL,对我来说,以几个英文单词作为帖子URL比较省事。对不习惯写英文单词的人来说,完全可以选择帖子编号。对大部分新闻、电商网站来说,内容量大,人工写URL就比较不现实了,大批量实现还是编号最直接。
麦小超问:
关于中文页面文章URL, 对于 英文单词、中文拼音、数字或字母,首选排序应该如何,比如关键词是 红木家具 :1./hong-mu-jia-ju.html ; 2./redwood-furniture.html; 3./12346.html
ZAC 老师您认为对于百度来说,哪种情况是最优的?
答:
对百度来说没区别。对你自己和用户来说就有区别了。你产品少、有足够人力写redwood-furniture.html的话,那挺好,要是几十万产品,恐怕编辑要疯。hong-mu-jia-ju.html这种,用户真的有时间去读汉语拼音吗?还有的网站写成hongmujiaju.html,那编辑和用户可能都要疯。
Lisa问:
Zac老师,文中您提到的
“除非SEO部门另行要求,页面不使用Keywords标签。”
是什么意思呢? 我了解的 Keywords标签的作用虽然大不如从前,但是我们也会加上这个标签的,能否解释一下?
答:
不是作用大不如前,是完全没有作用。所以多一事不如少一事。
winloong问:
响应式,为啥不是独立的移动站。独立的移动站不是更好吗?
答:
独立的移动站并没有更好。未来趋势是响应式设计,维护更简单。以前使用独立移动站是因为带宽、手机速度等限制,移动版必须简化,现在已经不是问题。现在Google已经全面转向移动优先索引,从百度对移动搜索的重视看,也是早晚的事,完全没有必要做一个比PC版简化的移动站了。
更新:读者Leo就这个问题留言很有意义,读者们可以了解更多开发、资源等角度的考虑。搬到正文中供大家参考。谢谢Leo:
移动站点开发现在主流的方式有三种:独立域名、客户端响应式、同域名下服务端返回不同内容(RESS)。
独立域名方案的前后端架构成本都不高,但是一件事情做两遍,开发成本翻倍。另外SEO方面需要了解canonical元信息。
响应式是一个后端架构成本低,前端架构成本很高的方案。一套前端代码要适配各种桌面显示器、横竖屏平板、横竖屏手机,方案维护成本非常高,不易变更。开发方面的成本有所降低,但有限。内容精简在前端实现,更多是视觉上的,移动端流量浪费的问题在国内还是需要关注,国内的4G没有宣传的那么快,至少图片响应式必须做。如果要考虑视障人群(国内部分大厂已经很关注这块了,包括我厂),兼容voiceover的体验,前端的架构成本会更高,开发规范也必须严格执行。
RESS,在后端就对用户进行一定的区分,对不同的设备返回不同的内容,以降低前端响应式的成本。这个方案相当于把上面两个方案揉到一起,取长补短。前后端都有架构成本,但相对比较容易接受。SEO方面需要了解HTTP Vary头。开发方面也有额外的成本。
开发和SEO一样,做80分的成本并不是做100分的80%,实际可能只有50%,甚至20%。所以选型到底怎么选,很多时候要考虑手里技术资源的实际情况。堆人可以解决的开发成本,其实是最便宜的,需要技术深度的是最贵的。招得到牛逼的架构师,响应式可以拿下,开发成本最低。没有,那不如架构low一点但是hold得住,多招几个普通水平的开发,也比玩脱好。
妙妙容问:
现在Google推AMP,用AMP的话,相当于另外的子页面了,与响应式设计是不是不同呢?AMP与响应式设计(如Bootstrap框架),Zac老师怎么推荐?
答:
用AMP的话,要用canonical标签,Google是知道一一对应关系的。使用响应式设计,也还可以做AMP,并没有矛盾。如果只能做一个,我会选择响应式设计,AMP基本上只是解决速度问题,这个可以通过优化代码、功能、服务器等在很大程度上解决,并不必须要用AMP。如果对你们技术部门来说实现AMP很简单,那不妨做一下,反正没损失。如果忙得四脚朝天,那不妨先不做。
百度MIP也是如此。
郴州SEO问:
整个网站所有页面无论栏目还是内页全部采用 http://www.XXX.COM/XXX/
这种一级目录的方式可以吗?
答:
可以,如果你看得清这个页面是目录还是内页,内页又是属于哪个目录的话。对稍大点的网站,我个人是很难记得清的。另外,对收录监控、流量分析都可能造成一些困难,因为你没办法把页面类型分开了。
再强调一遍,我写的SEO规范中的处理方法不是唯一解,也可能不是最优解。重要的是得有个规范,大家都遵守,省得犯致命错误。
Go 的一些说明
/*
* GO语言快速上手
*
* 关键字
* 程序声明: package, import
* 程序实体定义: const, var, func, type, struct, interface, map, chan
* 程序流程控制: switch, case, if, else, for, break, range, return, select, continue, default, fallthrough, goto, go
*
* 标识符
* 所有内置函数: append, cap, close, complex, copy, delete, imag, len, make
* new, panic, print, println, real, recover
* 空标识符: _ 列: _ = x
*
* 操作符
* &&, ||, !, ==, !=, <, <=, >, >=, +, -, *, /, %, <<, >>, &, &^, <-
*
* && . 表示逻辑 与,,,,,,,,,,,二元操作符,逻辑操作符 . true && true // 结果为 true
* || . 表示逻辑 或,,,,,,,,,,,二元操作符,逻辑操作符 . true || false // 结果为 true
* ! . 表示逻辑 非,,,一元操作符,,,,,,,,,逻辑操作符 . !p // 结果为 true (若 p 为 false)
*
* == . 作 相等判断,,,,,,,,,,,二元操作符,比较操作符 . abc == abc // 结果为 true
* != . 作 不等判断,,,,,,,,,,,二元操作符,比较操作符 . abc != Abc // 结果为 true
* < . 作 小于判断,,,,,,,,,,,二元操作符,比较操作符 . 100 < 300 // 结果为 true
* <= . 作 小于等于判断,,,,,,,,,二元操作符,比较操作符 . 100 <= 100 // 结果为 true
* > . 作 大于判断,,,,,,,,,,,二元操作符,比较操作符 . 300 > 100 // 结果为 true
* >= . 作 大于等于判断,,,,,,,,,二元操作符,比较操作符 . 300 >= 300 // 结果为 true
*
* + . 作 求和操作,,,一元操作符 又为 二元操作符,算数操作符 . 17 + 15 // 结果为 32
* - . 作 求差操作,,,一元操作符 又为 二元操作符,算数操作符 . 17 - 15 // 结果为 2
* * . 作 乘积操作,,,一元操作符 又为 二元操作符,算数操作符 . 16 * 2 // 结果为 32
* / . 作 求商操作,,,,,,,,,, 二元操作符,算数操作符 . 16 / 2 // 结果为 8
* % . 作 求余操作,,,,,,,,,, 二元操作符,算数操作符 . 17 % 2 // 结果为 1
*
* << . 按位左移操作,,,,,,,,,, 二元操作符,算数操作符 . 4 << 2 // 结果为 16
* >> . 按位右移操作,,,,,,,,,, 二元操作符,算数操作符 . 4 >> 2 // 结果为 1
* & . 按位与操作,,, 一元操作符 又为 二元操作符,算数操作符 . 5 & 11 // 结果为 1
* | . 按位或操作,,,,,,,,,,, 二元操作符,算数操作符 . 5 | 11 // 结果为 15
* &^ . 按位清除操作,,,,,,,,,, 二元操作符,算数操作符 . 5 &^ 11 // 结果为 4
* <- . 表示接收操作,, 一元操作符,,,,,,,,,接收操作符 . <- ch //
*
* 二元操作符的优先级
* 5 —— *, /, %, <<, >>, &, &^
* 4 —— +, -, |, ^
* 3 —— ==, !=, <, <=, >, >=
* 2 —— &&
* 1 —— ||
*
* 基本数据类型
* bool byte rune int float complex string
*
* 类型名称 字节 零值 描述
* bool | 1 | false | 布尔类型,不为真即为假,真用常量 true 表示,假用常量 false 表示
* byte | 1 | 0 | 字节类型,也可以看作为是一个 8 位二进制数代表的无符号整数类型
* rune | 4 | 0 | rune类型,可以看作为是一个 32 位二进制数代表的无符号整数类型
* int8 | 1 | 0 | 整数类型,由8 位二进制数 代表的 有盘符整数类型,无符号整数类型
* int16 | 2 | 0 | 整数类型,由16 位二进制数 代表的 有盘符整数类型,无符号整数类型
* int32 | 4 | 0 | 整数类型,由32 位二进制数 代表的 有盘符整数类型,无符号整数类型
* int64 | 8 | 0 | 整数类型,由64 位二进制数 代表的 有盘符整数类型,无符号整数类型
* float32 | 4 | 0.0 | 浮点类型,由32 位二进制数 代表的 浮点数类型
* float64 | 8 | 0.0 | 浮点类型,由64 位二进制数 代表的 浮点数类型
* complex64 | 8 | 0.0 | 复数类型,由64 位二进制数 代表的 复数类型,它由float32类型的实部 和 float32类型的虚部联合而成
* complex128 | 16 | 0.0 | 复数类型,由128位二进制数 代表的 复数类型,它由float64类型的实部 和 float64类型的虚部联合而成
* string | - | "" | 字符串类型,一个字符出代表了一个字符串值得集合,实质上是一个字节序列
*
*/
iOS关于苹果开发者账号及证书的一些说明
在iOS开发过程中,无论是安装到真机测试,还是上线到App Store,你总是要接触到证书的。 相信大家对苹果证书的创建都有一定的了解,网上也有很多教程,可是你还是会在开发过程中遇到各种证书不能用的情况。
下面先来介绍几个概念。
1、Apple ID 。这个是指苹果开发者账号(下面还有个App IDs,这两个(Apple ID、App IDs)有些人会搞混,这就有点尴尬了)。有了这个,你才可以登录到App Store去下载App。
2、Apple ID会员资格。如果你仅有Apple ID(普通用户只有Apple ID,就是用来从App Store下载应用的那个账号),那还接触不到证书,因为没资格。说白了,会员资格是要付费的。付费后,你才有可能能接触证书,并用证书打包App,上传App 到App Store。
会员资格有两种:
(1)Apple Developer Program - 苹果开发者计划($99)
(2)Apple Developer Enterprise Program - 苹果开发者企业计划($299)
关于价格:原来是以美元为单位的。现在也有当地价格。当然现在也有人民币价格(之前是没有的)。
关于App Store:Apple Developer Program可以上传到App Store;Apple Developer Enterprise Program不可以上传到App Store。
关于企业内发布:Apple Developer Program不可以企业内发布;Apple Developer Enterprise Program可以企业内发布。什么叫做企业内发布,就是不用发布到App Store,可以把IPA文件挂着自己的网站,供使用者下载、使用,而且不受UDID限制。
关于注册用户类型:Apple Developer Program可以个人,也可以是企业;Apple Developer Enterprise Program只能是企业。其中企业需要在注册时,提供邓白氏编码。
因为Apple Developer Program注册者可以是企业,有些人经常把Apple Developer Program和Apple Developer Enterprise Program搞混。 有些人经常说个人账号、企业账号,想当然的把Apple Developer Program注册的企业账号理解成苹果开发者企业计划,即Apple Developer Enterprise Program类型的账号。 又有些人经常把Apple Developer Enterprise Program说成企业账号,被人理解成Apple Developer Program注册的企业账号。 我一开始怎么区别的?我是以价格区别的,就说$99账号,还是$299账号。后来因为在国内可以用人民币支付,有些人不理解什么$99、$299,我改口以是否能够上传到App Store来区分(当然这些是对于那些门外汉来说的)。如果你知道了,那么你肯定能理解别人在说苹果开发者计划和苹果开发者企业计划的区别。
好了,上面说了那么多,相信你能对两种会员资料有了深刻理解。
有了会员资格,就可以通过这个界面登录
登录界面.png
登录以后,会看到这样的界面(当然随着苹果开发者网站界面更新,Web界面肯定会有变化,不过大同小异):
Apple Developer Program界面.png
点击Certificates, Identifiers & Profiles,会进入:
Certificates, Identifiers & Profiles界面.png
到这里就进入到证书管理界面了。
关于Certificates,我喜欢称之为证书文件,有开发证书和发布证书两种。
苹果开发者计划-证书选项
1、Apple Development Xcode 11及以后,可以用这个给iOS、macOS、tvOS、watchOS apps开发版本签名使用。 2、Apple distribution Xcode 11及以后,可以用这个给iOS、macOS、tvOS、watchOS apps发布版本签名使用,可以上传App Store,也可以Ad Hoc方式发布。 3、iOS App Development 给iOS app 开发版本签名 4、iOS distribution(App Store and Ad Hoc) 给iOS app 发布版本签名,可以上传App Store,也可以Ad Hoc方式发布; 5、Mac Development 给 Mac app 开发版本签名; 6、Mac App distribution 给 Mac app 发布版本签名,上传到App Store使用; 7、Mac Installer distribution 给 Mac App Store以外的应用安装包发布签名; 8、Developer ID Application 给Mac App Store以外的应用发布签名;
苹果开发者企业计划-证书选项
1、Apple Development Xcode 11及以后,可以用这个给iOS、macOS、tvOS、watchOS apps开发版本签名使用。 2、iOS App Development 给iOS app 开发版本签名 3、Mac Development 给 Mac app 开发版本签名 4、Developer ID Installer 给 Mac App Store以外的应用安装包发布签名; 5、Developer ID Application 给Mac App Store以外的应用发布签名; 6、In-House and Ad Hoc 给iOS app发布版本签名(In-House 和 Ad Hoc的区别是,In-House没有设备UDID安装限制,Ad Hoc限制每个应该发布设备不能超过100个以上)
关于certSigningRequest 证书创建时,需要CertificateSigningRequest.certSigningRequest文件,这个是从Mac电脑上的钥匙串导出的。我把这一步理解为证书和Mac电脑绑定。 CSR导出方法如下图:
从钥匙串中请求证书
填入邮件,输入常用名,勾选存储到磁盘
点击继续,就会获得一个CertificateSigningRequest.certSigningRequest(默认名称)文件。 xxx.certSigningRequest是Mac设备的公钥。 (1)上传xxx.certSigningRequest到苹果开发者账号后台,苹果会对Mac的公钥,用自己的私钥进行数字签名,最后生成证书文件.cer。 (2)下载.cer文件,可以添加到xxx.certSigningRequest对应的Mac上。(我的理解xxx.certSigningRequest的作用就是防止.cer,被其他Mac使用)
之前,iOS Development模式下只能绑定一个xxx.certSigningRequest文件,iOS distribution模式下只能绑定一个xxx.certSigningRequest文件,也就是这两中模式下只能绑定一台Mac电脑。现在可以绑定两个了。 细心的会发现在上面截图中,发现有很多Certificate,注意看Type,其他的都是 APNs开头,这个是什么呢?这个表示是推送证书。为什么推送证书会有那么多,因为推送证书是和App IDs相关的,多个App IDs配置了推送证书,这里就会有多个APNs的Certificate。
证书分发 绑定成功后,下载xxx.cer,加载到电脑中的钥匙串。会发现只有绑定的电脑上才显示可用,放到其他电脑上不可用。
如果其他电脑上也想用怎么办,通过绑定电脑导出相应xxx.p12文件(这个大家应该都会导出),然后给其他电脑使用。这步,我喜欢称之为授权给其他电脑使用。
证书撤销 还有一种情况,如果我绑定的电脑坏了,或者是之前同事的电脑,现在他走了,不能用了,怎么办?这种情况下,可以revoke,即撤销。这样之前绑定的会通通不可用。这个也是在多人开发时,会经常遇到的一个问题,用着用着,突然发现证书不可用了。 发现证书不可用,两个解决办法 (1)自己再revoke一次,从新绑定。(不太推荐,因为证书可能在被其他人使用,建议先确定当前绑定者是谁) (2)找当前绑定者提供p12文件。
关于Identifiers,我常用的是App IDs,其他有用,但很少。App IDs要与Xcode中的Bundle Identifier对应使用。
关于Devices,添加真机的Identifier,就是我们常说的UDID,这个在开发证书环境下,真机调试时,会有用到。
关于Provisioning Profiles,我喜欢称之为配置描述文件,也简称描述文件,这个叫法还是因为我经常使用iPhone配置实用工具,从这上面沿袭下来的。这个会安装到真机设备中(当然不会让我们手动安装,系统会自动安装)。
就介绍到这里,本文没有介绍证书的具体做法(这个可以在网上搜到很多),主要介绍了开发者账号类型,即不同的会员资格的区别;还有主要介绍了Certificates,为什么会经常遇到证书不能使用,还有证书不能使用后的一些处理方法。 希望对一个账号有多个使用者的情况下的朋友们有所帮助。这种很多开发者使用同一个账号的情况,建议有一个Admin,其他通过p12授权使用,防止使用混乱。
PHP中对变量的一些说明
如果程序比较大,引用同一个对象的变量比较多,并且希望用完该对象后手工清除它,个人建议用 "&" 方式,然后用$var=null的方式清除.php5中对于大数组的传递,建议用 "&" 方式, 毕竟节省内存空间使用。
php中对于地址的指向功能不是由用户自己来实现的,是由Zend核心实现的
php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。
当我们unset 一个引用,只是断开了变量名和变量内容之间的绑定,这并不意味着变量内容被销毁了
用$var=null的方式可以取消引用
以上就介绍了PHP中对变量的一些说明,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
php关于代码规范的一些小总结
以下信息是根据个人习惯进行整理,有什么不正确的地方,还请各位大牛指教
1.前端要进行基础的验证
一些很简单的基础验证要先在前端完成,例如输入框不允许为空,最基础的不为空的验证要在前端完成,当符合条件后再去请求服务器验证(ps:这里并不是说,后端不需要验证是否为空,后端验证也是必要的);这样的好处是把基础验证放在客户端完成,减少服务器的压力
2.在后端验证中,要先验证后查数据库(或者先验证条件是否成立,再进行下一步)
如果你要查询数据库,那就先判断你的不需要查询数据库的条件都是否已经成立了,下面是错误案例:
- 案例一:在后端验证中,要先验证后查数据库
错误:
问题很明显,上图中先调用了checkFullNameUniqueness进行了公司名称是否唯一的查询,然后才调用check_company_type_currency进行企业名称规范的验证;这显然是不正确的,虽然在代码执行上没有错误,但是很明显在企业名称不符合规范的时候多查了一次数据库(这里还有checkFullNameUniqueness和check_company_type_currency函数命名规范不统一的问题 notice:上面的代码还有一个问题,你注意到了吗?哈哈,留下悬念,往后看)
改善:
案例二 先验证条件是否成立,再进行下一步
错误:
问题分析:上面进行下一步查询的时候没有判断$order_info[''inviter_id'']是为空,就进行了下一步
改善:
tip:上面的notice解释,这个问题跟个人的代码习惯有关:
关于这段
你说这样写会不会更好呢?
3.关于双引号和单引号的问题
在php中“”里的内容会有是否是变量的判断,所以如果只是单纯的字符串请放入‘’中
今天的关于关于SEO技术规范的一些说明和关于seo技术规范的一些说明怎么写的分享已经结束,谢谢您的关注,如果想了解更多关于Go 的一些说明、iOS关于苹果开发者账号及证书的一些说明、PHP中对变量的一些说明、php关于代码规范的一些小总结的相关知识,请在本站进行查询。
本文标签: