好的,所以我创建了一个纯 html/javascript AJAX 网站,但我希望我的页面可以被 Google 索引。我的内容文件包含纯 html 中的元信息,但没有菜单栏等,并且我的 index.htm 包含所有菜单栏、javascript AJAX 内容等。为了使 AJAX 可被 google 索引,我的 URL 应该看起来像“<something >#!<somthingelse>”,Google indexbot 将更改为“<something>?_escaped_fragment_=<somethingelse>”,这样我的服务器就知道它应该直接返回内容,而不是通过 AJAX 加载它的页面。但是,由于我的服务器很愚蠢,因为它不使用服务器端处理,所以我需要通过 htaccess 执行一个技巧(这是我失败的地方:()
想法如下:我有我喜欢的 URL http://mysite.com/page1#!1、http://mysite.com/page2#!1等。通常,htaccess 应该将其重写为 /index.htm ?page=page1 以便我的 AJAX 读取 URL 参数并自动加载 page1.htm 内容文件。对于谷歌索引器,它应该忽略任何包含“?_escaped_fragment_=1”的url的重写,这样url直接指向内容页面这样我必须做出一个小的妥协,把#!1放在每个花哨的URL中,但是作为据我所知,这是在没有服务器端处理的情况下执行此操作的唯一方法(当然 htaccess 除外)
我似乎无法获得重写规则来做到这一点。到目前为止,这是我想出的:
RewriteEngine on
RewriteCond %{QUERY_STRING} (^|.*&)_escaped_fragment_=1(&.*|$)
RewriteRule ^(.*)$ %1 [L,R=301]
RewriteRule ^(.*)$ /index.htm?page=%1 [L,R=301]