2016-12-12 29 views
1

我正在嘗試使用Prerender服務爲爬網程序設置服務器端的Angular 1.5應用程序。Angular with Prerender(.htaccess設置)

對於內部頁面,一切正常,但主頁面呈現出現問題 - 抓取工具看到404頁面而不是主頁面。

我想有一個在我的.htaccess一些其他規則的問題 - 除了預渲染的規則,我使用所有的頁面其他兩個規則:

  • 重寫URL沒有結尾的斜槓上的網址與尾隨斜槓
  • 上的網址中添加www重寫URL加www

將是感激任何提示!

這裏是Apache serveer我的.htaccess文件

RequestHeader set X-Prerender-Token "MyToken" 

    RewriteEngine On 

    RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] 
    RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 


    # If an existing asset or directory is requested go to it as it is 
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR] 
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d 
    RewriteRule^- [L] 

    RewriteCond %{REQUEST_URI} ^/$ 
    RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/?(.*)$ 
    RewriteRule ^(.*)$ /snapshots/%1? [NC,L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*[^/])$ /$1/ [L,R=301] 

    <IfModule mod_proxy_http.c> 
     RewriteCond %{HTTP_USER_AGENT} Googlebot|bingbot|Googlebot-Mobile|Baiduspider|Yahoo|YahooSeeker|DoCoMo|Twitterbot|TweetmemeBot|Twikle|Netseer|Daumoa|SeznamBot|Ezooms|MSNBot|Exabot|MJ12bot|sogou\sspider|YandexBot|bitlybot|ia_archiver|proximic|spbot|ChangeDetection|NaverBot|MetaJobBot|magpie-crawler|Genieo\sWeb\sfilter|Qualidator.com\sBot|Woko|Vagabondo|360Spider|ExB\sLanguage\sCrawler|AddThis.com|aiHitBot|Spinn3r|BingPreview|GrapeshotCrawler|CareerBot|ZumBot|ShopWiki|bixocrawler|uMBot|sistrix|linkdexbot|AhrefsBot|archive.org_bot|SeoCheckBot|TurnitinBot|VoilaBot|SearchmetricsBot|Butterfly|Yahoo!|Plukkie|yacybot|trendictionbot|UASlinkChecker|Blekkobot|Wotbox|YioopBot|meanpathbot|TinEye|LuminateBot|FyberSpider|Infohelfer|linkdex.com|Curious\sGeorge|Fetch-Guess|ichiro|MojeekBot|SBSearch|WebThumbnail|socialbm_bot|SemrushBot|Vedma|alexa\ssite\saudit|SEOkicks-Robot|Browsershots|BLEXBot|woriobot|AMZNKAssocBot|Speedy|oBot|HostTracker|OpenWebSpider|WBSearchBot|FacebookExternalHit [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> 

    # If the requested resource doesn't exist, use index.html 
    RewriteRule^/index.html 

回答

0

你有這樣的節:

RewriteCond %{REQUEST_URI} ^/$ 
    RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/?(.*)$ 
    RewriteRule ^(.*)$ /snapshots/%1? [NC,L] 

這將嘗試從/快照/目錄下的文件服務,如果_escaped_fragment_是在URL 。這與Prerender.io沒有任何關係,因此您可能需要刪除該部分,因爲它可能是404的原因。

您還正在通過其用戶代理檢查Googlebot和Bingbot是一個壞主意,因爲他們可能會懲罰你的隱形。