joe*_*von 4 php security seo canonical-link
说你的URL的路径是:
/thisisa"quote/helloworld/
Run Code Online (Sandbox Code Playgroud)
那么如何创建rel=canonicalURL?
这是犹太人吗?
<link rel="canonical" href="/thisisa&quot;/helloworld/" />
Run Code Online (Sandbox Code Playgroud)
UPDATE
为了澄清,我收到表单提交,我需要将部分查询字符串转换为URL.所以步骤是:
所以我需要知道每一步都要做哪些处理......在第一次切割时,这是我的看法:
htmlspecialchars($rawQuery)htmlspecialchars($rawQery)htmlspecialchars($rawQuery)urlencode($rawquery)因为它来自URL,它不会已经被URL编码了吗?htmlspecialchars($rawQuery)你必须将你的问题分成两部分:
是的,在plain中不允许使用引号字符(U + 0022),并且必须使用%22.
这取决于您如何声明属性值:
默认情况下,SGML要求使用双引号(ASCII十进制34)或单引号(ASCII十进制39)分隔所有属性值.当值由双引号分隔时,单引号可以包含在属性值中,反之亦然.作者也可以使用数字字符引用来表示双引号(
")和单引号(').对于双引号,作者也可以使用字符实体引用".
attr="value"),那么你必须使用字符引用(","或")对属性值声明中的douvke引号标记字符进行编码.attr='value'),那么你不需要编码引号字符.但建议这样做.由于您的属性值中包含斜杠和双引号,因此第三种情况(根本不使用引号)不适用:
在某些情况下,作者可以指定没有任何引号的属性值.属性值可能只包含字母(az和AZ),数字(0-9),连字符(ASCII十进制45),句点(ASCII十进制46),下划线(ASCII十进制95)和冒号(ASCII十进制58).我们建议使用引号,即使可以消除它们.
由于双引号必须在URL中编码(但单引号为!),您可以使用以下命令对路径段或URL路径执行此操作:
$path = '/thisisa"quote/helloworld/';
$path = implode('/', array_map('rawurlencode', explode('/', $path)));
Run Code Online (Sandbox Code Playgroud)
如果要将该URL路径放在HTML属性中,请使用该htmlspecialchars函数对剩余的特殊HTML字符进行编码:
echo '<link rel="canonical" href="' . htmlspecialchars($path) . '" />';
Run Code Online (Sandbox Code Playgroud)