如果我的 Apache 服务器不允许代理,如何利用 prerender.io 服务
How to benefit of prerender.io services if my Apache server doesn't allow a proxy
有一个 Angular 应用程序,我想受益于搜索引擎机器人的 HTML 预渲染。
这是我的 .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/ [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 错误:
"You don't have permission to access /"
当我 运行 以下命令时:
curl http://example.com?_escaped_fragment_=
我没有专用服务器,而是外部共享 Apache 服务器。
我联系了这个服务器实例的支持,他们争辩说在共享实例上禁止代理,导致错误 403。
是否有任何解决方法可以在不切换到专用 Apache 服务器的情况下利用 prerender.io 和 Apache 和 .htaccess 配置?
代理标志是强制性的吗?
代理标志是强制性的,因为重定向会错误地告诉抓取工具将您的用户发送到重定向的站点。
有一个 Angular 应用程序,我想受益于搜索引擎机器人的 HTML 预渲染。
这是我的 .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/ [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 错误:
"You don't have permission to access /"
当我 运行 以下命令时:
curl http://example.com?_escaped_fragment_=
我没有专用服务器,而是外部共享 Apache 服务器。 我联系了这个服务器实例的支持,他们争辩说在共享实例上禁止代理,导致错误 403。
是否有任何解决方法可以在不切换到专用 Apache 服务器的情况下利用 prerender.io 和 Apache 和 .htaccess 配置?
代理标志是强制性的吗?
代理标志是强制性的,因为重定向会错误地告诉抓取工具将您的用户发送到重定向的站点。