2016-02-05 68 views
0

有一个Angular应用程序,我想受益于搜索引擎机器人的HTML预渲染。如果我的Apache服务器不允许代理prerender.io服务的好处

这里是我的.htaccess配置:

<IfModule mod_headers.c> 
    RequestHeader set X-Prerender-Token "My_Token" 
</IfModule> 

    <IfModule mod_rewrite.c> 
     Options +FollowSymlinks 
     RewriteEngine on 

       <IfModule mod_proxy_http.c> 
        RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR] 
        RewriteCond %{QUERY_STRING} _escaped_fragment_ 

      # Only proxy the request to Prerender if it's a request for HTML 
         RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent|\.ttf|\.woff))(.*) http://service.prerender.io/http://example.com/$2 [P,L] 
       </IfModule> 


       # Don't rewrite files or directories 
       RewriteCond %{REQUEST_FILENAME} -f [OR] 
       RewriteCond %{REQUEST_FILENAME} -d 
       RewriteRule^- [L] 

       # Rewrite everything else to index.html to allow html5 state links 
       RewriteRule^index.html [L] 
    </IfModule> 

我的问题是,P标志,涉及代理导致403错误:
“您没有权限访问/”
当我运行以下命令:
curl http://example.com?_escaped_fragment_=

我没有自己的专用服务器,而是一个外部共享Apache服务器。 我联系了这个服务器实例的支持,他们争辩说代理被禁止在共享实例上,导致错误403.

有没有任何解决方法可以利用Apache和.htaccess配置prerender.io而无需切换到一个专用的Apache服务器?

代理标志是强制性的吗?

回答

1

代理标志是强制性的,因为重定向会错误地告知抓取工具将您的用户发送到重定向站点。