Prerender.io子页面重定向到索引

时间:2015-09-21 13:29:24

标签: apache .htaccess google-search

我遵循了以下指南:

角度:

$locationProvider.html5Mode(true);

在html中,添加此元标题:

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

配置Apache:

  RewriteEngine On
# If requested resource exists as a file or directory
  # (REQUEST_FILENAME is only relative in virtualhost context, so not usable)
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
    # Go to it as is
    RewriteRule ^ - [L]

  # If non existent
    # If path ends with / and is not just a single /, redirect to without the trailing /
      RewriteCond %{REQUEST_URI} ^.*/$
      RewriteCond %{REQUEST_URI} !^/$
      RewriteRule ^(.*)/$ $1 [R,QSA,L]      

  # Handle Prerender.io
    RequestHeader set X-Prerender-Token "YOUR_TOKEN"

    RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest [NC,OR]
    RewriteCond %{QUERY_STRING} _escaped_fragment_

    # Proxy the request
    RewriteRule ^(.*)$ http://service.prerender.io/http://%{HTTP_HOST}$1 [P,L]

  # If non existent
    # Accept everything on index.html
    RewriteRule ^ /index.html

现在我的索引网站终于被谷歌选中了。

然而,无论何时我尝试访问我的子网站,它都会告诉我它已被重定向到index.html

任何人都可以告诉我,我做错了什么?我已经尝试了几个星期,并没有能够提出解决方案:(

来自google-bot-simulator

enter image description here

2 个答案:

答案 0 :(得分:1)

您正在使用Googlebot测试您的网站,但该用户代理不在您的重写规则正在寻找的可能用户代理列表中。

RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest [NC,OR]

以上列出了将被代理到prerender.io的所有机器人。更具体地说,它仅列出足以检测它们的用户代理的部分。如果您添加了'googlebot',那么它也会匹配。或者只是'bot'用于测试目的。

RewriteCond %{HTTP_USER_AGENT} bot|baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest [NC,OR]

试一试。此外,看看您的浏览器是否有一个“用户代理切换器”插件,可以让您比通过谷歌工具更快地进行测试。

答案 1 :(得分:0)

你的htaccess之前有什么样的?我认为这就是为什么你的子域都会显示index.html的原因:

# If non existent
    # Accept everything on index.html
    RewriteRule ^ /index.html