gpt4 book ai didi

.htaccess - 正确地将机器人请求重定向到网站的静态版本

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:34:50 27 4
gpt4 key购买 nike

我在让 Google 正确索引我的网站时遇到问题。

我的文件夹结构是这样的:

root
- cms
- www

example.com 指向 .htaccess 将所有请求路由到/www 的根目录:

RewriteEngine on
RewriteRule ^(.*)$ /www/$1 [L]

前端

/www 中的 Angular 前端通过 REST api 从/cms 获取数据。到目前为止一切顺利。

我想要实现的是,机器人不会在我的 ajaxified/www 页面内爬行,而是在/cms 内爬行,在那里我打印出与/www 中的 URL 结构相对应的静态内容。

静态内容的 URL:

/www/test1 -> 通过 REST 输出好的内容

/cms/test1 -> 为爬虫输出纯文本内容

机器人重定向

我将访问 example.com/www 的机器人重定向到/cms,如下所示:

RewriteCond %{HTTP_USER_AGENT} (googlebot|yahoo|bingbot|baiduspider) [NC]
RewriteRule ^(.*)$ http://www.example.com/cms/$1 [R=301,L]

站点地图

我还用谷歌注册了一个站点地图,内容如下:

http://www.example/test1
http://www.example/test2
and so on...

问题

一切正常但是:谷歌也在抓取/cms 中的静态内容,而没有被我重定向到那里。我只希望通过重定向提供这个静态子域,而不是在 Google 的机器人自己搜索它时提供。有点“不允许”机器人在这里爬行 - 但另一方面我需要它来爬行。我认为第 22 条军规。

编辑:完整的 .htaccess 文件

RewriteEngine On

# Sitemap
RewriteRule ^sitemap(-+([a-zA-Z0-9_-]+))?\.xml(\.gz)?$ /cms/sitemap$1.xml$2 [L]
RewriteRule ^sitemap(-+([a-zA-Z0-9_-]+))?\.html(\.gz)?$ /cms/sitemap$1.xml$2 [L]

# Redirect bots to static pages
RewriteCond %{HTTP_USER_AGENT} (googlebot|yahoo|bingbot|baiduspider) [NC]
RewriteRule ^(.*)$ http://www.example.com/cms/$1 [R=301,L]

# Angular HTML5 mode: Don't rewrite files or directories
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index

# Angular HTML5 mode: Rewrite everything else to index.html to allow html5 state links
RewriteRule (.*) /www/index.html [L]

编辑2

我已经把这个标签添加到 www 页面

<meta name="fragment" content="!"> 

让爬虫知道页面上使用了 AJAX。我正在使用@Croises 建议的重写,但这是对 Google 的 _escaped_fragment_ 重新请求的 react 。让我们等几天...

RewriteCond %{HTTP_USER_AGENT} (googlebot|yahoo|bingbot|baiduspider) [NC]
RewriteCond %{QUERY_STRING} _escaped_fragment_
RewriteCond %{REQUEST_URI} !^/cms/
RewriteRule ^(.*)$ cms/$1 [L]

最佳答案

您不能重定向到静态页面,并要求他们在不抓取“真实”内容的情况下索引或引用最终页面。

您可以重写您的链接:

# Rewrite bots to static pages
RewriteCond %{HTTP_USER_AGENT} (googlebot|yahoo|bingbot|baiduspider) [NC]
RewriteCond %{REQUEST_URI} !^/cms/
RewriteRule ^(.*)$ cms/$1 [L]

只是没有 R=301。就像这样,您无需重定向即可显示页面。
但要注意伪装(Google and Cloaking)。

关于.htaccess - 正确地将机器人请求重定向到网站的静态版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28277669/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com