从prerender htaccess重写规则中删除index.php

时间:2017-03-02 12:18:37

标签: apache .htaccess prerender

我正在使用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

是否可以阻止它?

EG:https://www.example.com/

感谢。

1 个答案:

答案 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更改为您的域名。