如何剥离?_escaped_fragment_ =使用.htaccess

时间:2015-06-12 13:45:00

标签: ajax .htaccess mod-rewrite seo

Google发现我允许最终用户使用ajax加载来导航我的内容,并将我的网页加载为用户客户端,而不是将其作为新页面加载请求。因此,它没有尝试索引www.mysite.com/page,而是请求www.mysite.com /?_ escaped_fragment _ = / page

这根本不是我想要的。我的快照与加载ajax的内容在同一URL上提供。该网站没有使用查询,它不支持它们,我不想建立这种支持。这意味着所有页面看起来都是谷歌,这当然是不幸的!

目前,所有页面请求都被重定向到服务器端,使用.htaccess向index.php文件发送请求,而index.php文件又在服务于客户端之前编译服务器上的html doc。该网站为所有页面提供完全有效且独特的html文档。但谷歌坚持以ajax方式进行,并添加始终返回破坏页面的查询。

我不是.htaccess专家,但在我看来,解决这个问题的最简单方法是重写请求,删除?_escaped_fragment _ = / bit并永久地将任何此类请求重定向到当前正在工作的请求使用正确的网址加载页面。

任何人都知道我会这样做吗?下面是我的.htaccess文件的当前重定向部分,需要使用_escaped_fragment_剥离代码进行修改:

<IfModule mod_rewrite.c>
  RewriteEngine on 
  RewriteBase /

  #if trailing / remove it with a permanent redirect
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)/$ /$1 [L,R=301]

  #if missing www. add it with a permanent redirect
  RewriteCond %{HTTP_HOST} !^www\.
  RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301] 

  #requests for index.php never rewritten
  RewriteRule ^index\.php$ - [L]

  #if file or directory are missing, route to index.php
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>

1 个答案:

答案 0 :(得分:2)

这是我重写它的方式,以便所有?_escaped_fragment _ = / XXXXX请求被重定向到/ XXXXX而没有查询

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%1? [L,R=301]

这使得www.domain.com/?_escaped_fragment_=/omepage重定向(永久)到www.domain.com/somepage

......这正是我想要的。