轉義片段是查詢參數,而不是路由,在根路由Route::get('/', 'RootCtrl');
中,您可以檢查$_GET['_escaped_fragment']
的存在,如果存在,則返回HTTP 302
重定向到快照目錄中的相應文件。
雖然這會起作用,但它不是一個完美的解決方案,因爲有些機器人可能會索引snapshots
文件的路徑而不是原來的文件,因爲使用Laravel框架來做這件事首先是不正確的。
課程的最佳選擇,是重寫包含一個_escaped_fragment_
查詢參數給它的Laravel應用程序的配置之前的相應的路徑,在nginx的\ apache的配置,任何要求,這樣的請求將不會事件到達Laravel路由器。
我與人合着了Angular SEO plug-and-play solution,使用PhantomJS & Mongoose集成web服務器,預渲染任何Async JS代碼,並將其作爲原始HTML服務器。
服務器配置方面也在README.md
文件中解釋過,請注意,如果您想要使用靜態快照,只需將proxy-pass更改爲重寫(以便正確的URL獲得機器人索引)。
希望有所幫助。使用簡單的重寫與nginx的
實施例:
if ($args ~* "^_escaped_fragment_=(.+)") {
set $path $1
set $args '';
rewrite ^.*$ /snapshots/$path last;
}
編輯:
的Apache,您的請求(一些忠告:移動到nginx的)。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^_escaped_fragment=(.+)$
RewriteRule ^.*$ /snapshots/%1 [QSA,L]
</IfModule>
我它使用Apache ......所以,如果ü可以把這些代碼做... –
我嘗試了...但我不使用PhantomJS,因此......我不敢肯定我怎麼能符合我目前的要求。 :( –
發佈,請嘗試使用nginx ... –