我正在使用prerender.io javascript中间件在我的网站上呈现JS页面。
htaccess中间件代码如下。
RewriteCond %{HTTP_USER_AGENT} googlebot|bing|msnbot|yandex|yahoo|baidu|facebook|screaming|siteliner|ahrefsbot|dmca.com [NC,OR]
RewriteCond %{QUERY_STRING} _escaped_fragment_
RewriteCond %{HTTP:X-Prerender} !1
# Only proxy the request to Prerender if it's a request for HTML
RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.svg|\.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/https://www.example.com/$2 [P,L]
这个问题,至少在我的服务器上(但不是在其他一些服务器上)是index.php被添加到发送给服务的url中,这会导致错误。
EG:https://www.example.com/index.php
是否可以阻止它?
感谢。
答案 0 :(得分:0)
首先,您不希望其用户代理检查googlebot,bingbot或yandex,因为它们支持_escaped_fragment_抓取协议。由他们的用户代理检查它们可能会让你因伪装而受到惩罚。
尝试更改此行:
RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.svg|\.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/https://www.example.com/$2 [P,L]
到此:
RewriteRule ^(?!.*?(\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.svg|\.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))(index.php)?(.*) http://service.prerender.io/https://www.example.com/$3 [P,L]
注意添加(index.php)?并将2美元变为3美元。另外,请不要忘记将www.example.com更改为您的域名。