2009-12-09 74 views
2

我有一个生成kml文件的网站。像这样的一个URI: /tokml?gid = 2846kml文件类型的搜索引擎优化

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

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

但是,对于filetype:kml的Google搜索不会从我的网站获得任何结果。我可以缓存所有kml文件并构建一个这样的URI:/ kml/Mt。 Dana Summit Trail.kml

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

回答

2

根据我的经验,Google通常在查询字符串中使用标识符的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并将其作为旧的查询字符串参数传递给脚本。

+0

您的代码在.htaccess文件中不起作用。 – Gumbo 2009-12-10 12:20:40

+0

他谷歌搜索网站:toposhare.org filetype:kml actual给出的结果,因为我有这样的溃疡:www.toposhare.org/rss2kml.kml?...我可以添加一个.kml结尾到我的脚本(tokml .kml?gid = 2846)kml的网址:toposhare.org/tokml?gid=1008如何在我的网站中使用“url slug”? – 2009-12-10 13:10:40

+0

@Gumbo:谢谢,修正了bug并增加了额外的选项。 @Martin:使用mod_rewrite你将得到'.kml'文件结尾,并且我更好地描述了“url slug”的想法。 – 2009-12-10 14:29:40