我有一个网站,生成kml文件。像这样的uri : /tokml?gid=2846
生成如下文件: Mt。Dana峰会Trail.kml
在PHP脚本中使用Header('Content-Disposition: inline; filename="Mt. Dana Summit Trail.kml"');
并在Apache http服务器上运行。
但是在谷歌上搜索filetype:kml将不会给出我的网站的任何结果。我可以缓存所有的kml文件并构建一个uri,如下所示: /kml/Mt。Dana峰会Trail.kml
但是有没有其他的解决方案呢?
发布于 2009-12-10 20:17:31
根据我的经验,谷歌通常会很好地索引查询字符串中带有标识符的URLs因此,在搜索filetype:kml
时似乎很奇怪什么都没有显示出来。如果你能发布一个链接到有问题的站点,或者向/tokml?gid=2846
提供一个请求的响应报头的完整副本,那就太好了--这些报头中可能隐藏着某种“拦截器”。
为每个文档分配一个“真正的”URL (不带查询字符串参数)通常是一个好主意,而且您不需要通过磁盘缓存来实现这一点。如果您的PHP应用程序托管在Apache上,您可以通过在应用程序的.htaccess
文件中包含以下内容,让mod_rewrite将漂亮的URL转换为查询字符串版本:
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段并将其作为一个很好的老式查询字符串参数传递给脚本。
https://stackoverflow.com/questions/1872684
复制相似问题