Php kml文件类型的搜索引擎优化

Php kml文件类型的搜索引擎优化,php,seo,kml,Php,Seo,Kml,我有一个生成kml文件的网站。类似这样的uri: /tokml?gid=2846 生成如下所示的文件: 达纳山顶小径 使用标题('Content-Disposition:inline;filename=“Mt.Dana Summit Trail.kml”)在PHP脚本中,并在Apache http服务器上运行 但是谷歌搜索filetype:kml不会给出我网站上的任何结果。我可以缓存所有kml文件并构建如下uri:/kml/Mt.Dana Summit Trail.kml 但还有其他解决方案吗?

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

生成如下所示的文件: 达纳山顶小径

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

但是谷歌搜索filetype:kml不会给出我网站上的任何结果。我可以缓存所有kml文件并构建如下uri:/kml/Mt.Dana Summit Trail.kml


但还有其他解决方案吗?

根据我的经验,谷歌通常会在查询字符串中使用标识符为URL编制索引,因此,在搜索
文件类型:kml
时,似乎什么都没有显示,这很奇怪。如果你可以发布一个链接到有问题的站点,或者提供一个请求到
/tokml?gid=2846
的响应标题的完整副本,那就太好了——这些标题中可能隐藏着某种“拦截器”

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

谷歌搜索网站:toposhare.org文件类型:kml实际给出结果,因为我有如下ULR:www.toposhare.org/rss2kml.kml?。。。我当然可以在我的脚本(tokml.kml?gid=2846)中添加一个.kml结尾的kml:toposhare.org/tokml?gid=1008我如何在我的url中使用“url slug”?@Gumbo:谢谢,修复了错误并添加了额外的选项@马丁:使用mod_rewrite,你会得到
.kml
文件的结尾,我对“url slug”的概念做了更好的描述。