2016-04-03 122 views
0

我如何使seo友好的url這樣,在後端我有節點服務器。Ango seo友好的網址和頁面重新加載問題

http://localhost:3003/my-new-mobile //product 
http://localhost:3003/my-new-category //category 
http://localhost:3003/my-first-blog-post // blog post 

我已經嘗試過這樣的東西,但它不工作。我將只使用一個控制器的所有4個以上的URL。 我可以使用正規快遞嗎?

$routeProvider 
     .when('^/([a-z])$', { 
     templateUrl: 'partials/main.html', 
     controller: 'MainCtrl' 
     }) 

當我試圖像這樣:

<html ng-app="myApp"> 
<base href="/client"> 

和app.js

$locationProvider.html5Mode(true); 

它時重新加載頁面顯示錯誤。 http://localhost:3003/my-new-mobile

Cannot GET /my-new-mobile 

任何建議,如何才能做到這一點或Cannot GET /my-new-mobile錯誤如何避免?

這裏是我的server.js

var express   = require('express'); 
var app     = express(); 
var bodyParser  = require('body-parser'); 

app.set('views', __dirname); 
app.engine('html', require('ejs').renderFile); 


var port = process.env.PORT || 3003; 
app.listen(port, function(){ 
     console.log('Listening on port ' + port); 
}); 
    app.get('/', function(req, res){ 
     res.render('client/views/index.html'); 
    }) 

app.get('/partials/:name', function (req, res) { 
    console.log(req.params.name); 
     res.render('client/views/partials/' + req.params.name); 
}); 

app.use('/clientjs', express.static(__dirname + '/client/js')); 
    app.use('/bower_components', express.static(__dirname + '/bower_components')); 
app.use('/images', express.static(__dirname+'/uploads/')); 
+1

服務器必須返回所有與index.html – YOU

回答

1

嘗試是這樣的 -

$routeProvider 
    .when('/:post', { 
    templateUrl: 'partials/main.html', 
    controller: 'MainCtrl' 
    }) 

你需要設置其他路線以及他們可能會搞砸了,我推薦做這樣的事情 -

$routeProvider 
    .when('/posts/:post', { 
    templateUrl: 'partials/main.html', 
    controller: 'MainCtrl' 
    }) 

編輯也許你應該改變你的服務器這樣的代碼

app.get('/:post', function(req, res){ 
    res.render('client/views/index.html'); 
}) 
+0

你的第一個解決方案是好的,但是當我重新加載頁面我得到錯誤'不能GET /我的新手機' –

+0

如何你在爲你的應用程序服務嗎 – atefth

+0

http:// localhost:3003/my-new-mobile –

0

您要爲每一個路線index.html文件的Express服務器上的不只是/。

對於實例

//Serve Static Assets 
app.use('/images', express.static(__dirname + '/dist/images')); 
app.use('/scripts', express.static(__dirname + '/dist/scripts')); 
app.use('/styles', express.static(__dirname + '/dist/styles')); 
app.use('/favicon.ico', express.static(__dirname + '/dist/favicon.ico')); 
app.use('/robots.txt', express.static(__dirname + '/dist/robots.txt')); 

//Respond to with index for all other routes 
app.get('/*', function(req, res, next) { 
    // Just send the index.html for other files to support HTML5Mode 
    res.sendFile('dist/index.html', { root: __dirname }); 
}); 

這也是值得注意的是,這些都是SEO友好的URL,您的角度應用未SEO沒有服務器端渲染友好。你可能想看看prerender.io

+0

讓我試試這個溶液 –