配置apache vhost不处理“?”作为查询令牌

时间:2010-11-26 18:49:02

标签: apache virtualhost

我已经快照了我的ajax应用程序上的所有页面,并根据谷歌规范[http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=174992]我将这些文件存储为描述为“www.example.com/ajax.html?_escaped_fragment_=”的模式mystate“。 在同一目录中有一个名为的文件,适用于此示例ajax.html,它是一个静态html页面。根本没有涉及服务器端。

导航到www.example.com/ajax.html?_escaped_fragment_=mystate时,其中包含的html内容与ajax.html中的内容不同,ajax.html会在浏览器中显示,使用curl,wget和google的“获取为googlebot”工具。

从我的理解,问题是什么?被http服务器[apache 2]处理,就像浏览器处理#一样,即它被视为查询参数char。

那么,我如何指示此VHOST正常运行,并发送www.example.com/ajax.html?_escaped_fragment_=mystate文件呢?

由于

1 个答案:

答案 0 :(得分:1)

您可以将所有片段保存在/ fragments /(mystate)中并使用apache模块mod_rewrite:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^ajax.html$ /fragments/%1

这读作: 如果查询字符串为“_escaped_fragment_”,则取值,将其放入变量%1并继续。然后,如果网址也是'ajax.html'将ajax.html重写为/ fragments /%1。