0

角度アプリが生成したページをHashBangs #!を使わずにGoogleが完全にクロールできるようにしようとしています。だから私はとpushstate URLを生成:Googleクローラが事前に表示されていない角度生成ページ

$locationProvider.html5Mode(true); 
$locationProvider.hashPrefix('!'); 

アプリの設定に加え、HTMLヘッダーへ

<base href="/hockey-att/"> 
<meta name="fragment" content="!"> 

そして私は.htaccessでこれを持っている:

RewriteEngine on 

RewriteBase /1/ 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ #/$1 [L] 

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

<IfModule mod_rewrite.c> 
    <IfModule mod_proxy_http.c> 
     RewriteEngine On RewriteCond %{HTTP_USER_AGENT} baiduspider|googlebot|googlebot-mobile|bingbot|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR] 
     RewriteCond %{QUERY_STRING} _escaped_fragment_=(\%2F|/)_(._) 

     # 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://%{HTTP_HOST}/$2 [P,L] 
    </IfModule> 
</IfModule> 

私はサブフォルダ1におけるアプリとトークンprerender.ioに設定.htaccessファイルでRequestHeader set X-Prerender-Tokenセクションを持っています。

新しいURLを持つアプリケーションは完全に動作しており、prerender.ioを使用してページをレンダリングしています。ページはあらかじめレンダリングされており、問題なくアクセスできます。http://service.prerender.io/ {http://myurl.com/page}

私の問題は、Googleのクローラがプリレンダリングされたページにアクセスしていないことです。取得したURLに?_escaped_fragment_=の有無にかかわらずSearch ConsoleのFetch as Google機能で試してみました。しかし、元のページには角度のついたディレクティブがあります。

私は.htaccessに何か不足していると思いますが、何がわかりません。

角度状態にui-routerを使用する。

答えて

0

あなたは#URLにすべての要求をリダイレクトしているように見えます:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ #/$1 [L] 

は正しいですか?その場合、そのコードは、各要求に対してPrerender設定が実行されないようにします。

html5プッシュ状態を使用している場合は、#URLにリダイレクトする必要がないため、そのセクションを削除できますか?

+0

ブラウザで 'http:// myurl.com/1/state'というURLを開くなど、'# 'を削除してもページに直接アクセスできなくなり、404エラーが発生します。この場合、Fetch as Googleが私に見つかりませんでした。 – neptune

+0

index.htmlはどこから配信されますか?だからこそ、それが404という理由だ。 Prerender設定の後に、すべての要求に対してindex.htmlを提供するコードが必要です。 –

+0

私はhttp://myurl.com/1/index.htmlで私のindex.htmlを持っていますし、URLのようなhttp://myurl.com/1/#/homeを持っていたpushstateのURLを実装する前に。 [これは](http://sigmagfx.com/1)私が取り組んでいるサイトです。私はそれが自分の.htaccessとPico CMSのサイトを持っているmyrootのURLで言及する価値があると思う。 – neptune

関連する問題