我有一个生成 kml 文件的网站。像这样的 uri:
/tokml?gid=2846
生成一个像这样的文件:
达纳山山顶步道.kml
Using Header('Content-Disposition: inline; filename="Mt. Dana Summit Trail.kml"');
在 PHP 脚本中并在 Apache http 服务器上运行。
但是 Google 搜索 filetype:kml 不会从我的网站提供任何结果。我可以缓存所有 kml 文件并构建一个像这样的 uri:/kml/Mt.达纳峰步道.kml
但还有其他解决方案吗?
根据我的经验,Google 通常会在查询字符串中很好地索引带有标识符的 URL - 因此,在搜索时什么都没有显示似乎很奇怪filetype:kml
。如果您可以发布指向相关站点的链接,或者提供请求的响应标头的完整副本,那就太好了/tokml?gid=2846
- 这些标头中可能隐藏着某种“阻止程序”。
为每个文档分配一个“真实”URL(不带查询字符串参数)通常是一个好主意,并且您不需要磁盘缓存 KML 文件来实现此目的。如果您的 PHP 应用程序托管在 Apache 上,您可以让模组重写 http://httpd.apache.org/docs/2.2/rewrite/将漂亮的 URL 转换为查询字符串版本,方法是将其包含在.htaccess
申请文件:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^kml/([^.]+)\.kml$ tokml?slug=$1 [NC]
您可能需要向数据模型添加一个额外的字段,以保存每个 KML 文件的“url slug”。该值通常与文件名几乎相同,但全部小写且没有任何特殊字符 - 例如。mt-dana-summit-trail
。通过在 URL 中使用此字段而不是实际名称,用户和机器人将避免看到充满丑陋的编码字符值的 URL。
每当您写出 KML 文件的链接时,请使用新的 URL 样式:
<a href="/kml/mt-dana-summit-trail.kml">Mt. Dana Summit Trail</a>
In your tokml
脚本,然后检索slug
查询字符串键,并使用它 - 而不是gid
- 查找相关数据对象时。请注意重写规则如何捕获 url slug 并将其作为良好的老式查询字符串参数传递给脚本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)