2015-09-26 71 views
2

我想從我的angularjs應用中移除#,我正在開發一個網站,我想這可能有助於使搜索引擎友好的網站,可能是我錯了,請幫助 感謝我如何讓我的AngularJS網站在谷歌上爬行?

+0

http://prerender.io或滾動服務器端渲染你自己的。 – YOU

+0

任何免費解決方案? – Punit

+0

它的開源 - https://github.com/prerender/prerender - 你可以在你自己的服務器上運行 – YOU

回答

2

我與喬·勞埃德同意爲從您的網址刪除#的方式,但它不會幫助你,使你angularjs網站抓取。 看看下面的步驟:

  1. 配置html5mode

    配置(函數($ routeProvider,$ locationProvider){$ locationProvider.html5Mode(真);

  2. 添加<meta name="fragment" content="!">到您的網頁,所以谷歌機器人知道要添加?_escaped_fragment_ =在您的請求結束時

  3. 處理?_escaped_fragment_=服務器端並提供所請求的html頁面的靜態快照(phantomjs可以完成這項工作),以便機器人將索引html頁面的渲染版本。

  4. 填寫您的sitemap.xml並把它用www.google.com/webmasters/

玩得開心到谷歌!

+0

我使用XAMPP作爲本地服務器,我的網站路徑是http:// localhost/mysite 第一步之後當我打開http:// localhost/mysite,它將我重定向到http:// localhost 我沒有做任何服務器端,我正在使用PHP。 是否有一些.htaccess的東西,我必須做的? 謝謝 – Punit

+0

嘗試將添加到您的索引頁 –

+0

謝謝,我該如何處理?_escaped_fragment_ = with htaccess – Punit

1

配置

要刪除你的url中的#需要添加到你的主模塊中。你把應用程序變成html5模式。

//This config is used to remove the # in the html 
app.config(["$locationProvider", function($locationProvider) { 
    $locationProvider.html5Mode({ 
     enabled: true, 
     requireBase: false 
    }); 
}]); 

服務器端(的NodeJS)

這將有一個服務器端的效果,當你打刷新你需要添加額外的路由能夠找到新的URL。這將在您的快遞js app.js文件中起作用。當公共文件夾包含您的角度應用程序,你有你的index.html文件中有

// ### CATCH REFRESH TO INDEX ### 
app.all('/*', function(req, res, next) { 
    // Just send the index.html for other files to support HTML5Mode 
    res.sendFile('public/index.html', { root: __dirname }); 
}); 
+0

@ christophe.chapron我不確定是否誠實,我的回答只是刪除了URL中的哈希,並讓nodejs服務器知道如何處理新路徑。 –

+0

是的,我同意,但它不會幫助所有的搜索引擎優化:) @Punit:閱讀http://www.yearofmoo.com/2012/11/angularjs-and-seo.html +有關ajax網站的谷歌文檔 –

+0

我在服務器端使用PHP,你能幫忙嗎? OR有沒有可能通過HTACCESS文件 – Punit