【问题标题】:How do I strip out ?_escaped_fragment_= using .htaccess如何使用 .htaccess 去除 ?_escaped_fragment_=
【发布时间】:2015-08-28 13:24:10
【问题描述】:

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

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

目前,所有页面请求都使用 .htaccess 将请求重定向到服务器端,将请求发送到 index.php 文件,该文件反过来在服务器上编译 html 文档,然后再提供给客户端。该站点为所有页面提供完全有效且唯一的 html 文档。但是 google 坚持使用 ajax 方式并添加总是返回损坏页面的查询。

我不是 .htaccess 专家,但在我看来,解决此问题的最简单方法是重写请求,删除 ?_escaped_fragment_=/ 位并将任何此类请求永久重定向到当前有效的使用正确的 url 加载页面。

有人知道我会怎么做吗?以下是我的 .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>

【问题讨论】:

标签: ajax .htaccess mod-rewrite seo


【解决方案1】:

这就是我重写它的方式,以便所有 ?_escaped_fragment_=/XXXXX 请求在没有查询的情况下被重定向到 /XXXXX

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

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

...这正是我想要的。

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 2023-03-16
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2021-03-26
    相关资源
    最近更新 更多