2

我有一个生成 kml 文件的网站。像这样的 uri:/tokml?gid=2846

生成如下文件:Mt. Dana Summit Trail.kml

Header('Content-Disposition: inline; filename="Mt. Dana Summit Trail.kml"');在 PHP 脚本中使用并在 Apache http 服务器上运行。

但是对 filetype:kml 的 Google 搜索不会从我的网站上给出任何结果。我可以缓存所有 kml 文件并像这样构建一个 uri:/kml/Mt. 达纳峰会 Trail.kml

但是还有其他解决方案吗?

4

1 回答 1

2

根据我的经验,谷歌通常在查询字符串中很好地索引带有标识符的 URL - 因此,搜索filetype:kml. 如果您可以发布指向相关站点的链接,或者提供来自请求的响应标头的完整副本,那就太好了/tokml?gid=2846- 这些标头中可能隐藏着某种“阻止程序”。

为每个文档分配一个“真实的”URL(不带查询字符串参数)通常是一个好主意,您不需要磁盘缓存 KML 文件来实现这一点。如果您的 PHP 应用程序托管在 Apache 上,您可以让mod_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>

在您的tokml脚本中,检索然后slug查询字符串键,并gid在查找相关数据对象时使用它而不是使用它。请注意重写规则如何捕获 url slug 并将其作为良好的老式查询字符串参数传递给脚本。

于 2009-12-10T12:17:30.527 回答