2016-10-25 1 views
0

平均スタックで新しいです。browser.iのURLでハッシュを削除したいのですが、これを正常に実行しますが、その時点でページを更新すると 'ネットワークエラー404が見つかりません'この問題を解決するのを手伝ってください。html5モードでangularjs + nodejsのハッシュを削除する

以下は、index.htmlファイルのコードを示しています。以下

<script> 
    var base = document.createElement('base'); 
     base.href = 'http://localhost:3000/'; 
     document.getElementsByTagName('head')[0].appendChild(base); 
     </script> 

config.router.js以下

angular.module('app') 
     .config(
       ['$stateProvider', '$urlRouterProvider','$locationProvider', 'MODULE_CONFIG', 
        function ($stateProvider, $urlRouterProvider,$locationProvider, MODULE_CONFIG) { 
        $locationProvider.html5Mode(true).hashPrefix('!'); 

のコードでのNode.jsのserver.jsファイル

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var mongoose = require('mongoose'); 
var routes = require('./routes/index'); 
var country = require('./routes/country'); 
var category = require('./routes/Category'); 
var attributes = require('./routes/Attribute'); 
var subscription = require('./routes/subscription'); 
var mall = require('./routes/mall'); 
var http = require('http'); 
var user = require('./routes/user'); 
var app = express(); 
//var cors = require('cors'); 
// view engine setup 
//app.use(cors()); 
app.set('views', path.join(__dirname, '../app')); 
app.engine('html', require('ejs').renderFile); 
app.set('view engine', 'html'); 
// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.urlencoded({limit: '50mb', extended: true })); 
app.use(bodyParser.json({limit: '50mb'})); 
app.use(function(req, res, next) { 

    res.header("Access-Control-Allow-Headers", "X-Requested-With"); 
    next(); 
}); 
app.use(cookieParser()); 
//app.use(bodyParser({limit: '50mb'})); 
app.use(express.static(path.join(__dirname, '../app/'))); 
/*allowCrossDomain = function(req, res, next) { 


    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length'); 
    next(); 
}; 

app.use(allowCrossDomain);*/ 
app.use(express.static(path.join(__dirname, '../app/'))); 
app.use('/', routes); 
app.use('/api/user', user); 
app.use('/api/country', country); 
app.use('/api/city', country); 
app.use('/api/state', country); 
app.use('/api/mall', mall); 
app.use('/api/category', category); 
app.use('/api/attributes', attributes); 
app.use('/api/subscription', subscription); 
app.set('port',3000); 
mongoose.connect('mongodb://52.39.244.83 /deals'); 
var db = mongoose.connection; 
db.on('error',erroroccured); 
db.once('open',startserver); 
function erroroccured(){ 
    console.log('error'); 

} 
function startserver(){ 
// mongoose.set("debug", true); 
    var server = app.listen(app.get('port'), function() { 
     console.log('Server listening on port ' + server.address().port); 
    }); 
} 

module.exports = app; 

のコードはとても助けてくださいです私はこの問題からすべてのおかげで前に出てくる。

+0

問題ないはずだと思う使用 - https://github.com/angular-ui/ui-router/wiki /Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode](https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions# html5モードでサーバーと作業する方法を構成する方法)。あなたのケースでは、ExpessJSルートの書き換えが必要です。 – Mahesh

+0

あなたのおかげで、私は解決策を見つけました。提案には非常に感謝しています。 – sunil

答えて

0

あなたがhashPrefix('!')設定を定義しているので

index.html/path 

ちょうどhashPrefixを定義しないようにあなたは、プレーンなHTML5モードスタイルをしたい場合は、あなたのURLが今

index.html#!/path 

になります。デフォルトは''です。

はまた、あなたはまた、ベースタグを取り除くことができますが、それは、これはあなたのサーバー上で失敗するよう

<head> 
    <base href="/"> 
    </head> 

代わりのlocalhost:3000として定義、ベースタグを定義しようとしていると問題が発生する可能性があります。

0

私はちょうどこれが[これを参照

$locationProvider.html5Mode(true); 

とHTML

<head> 
    <base href="/"> 
</head> 
関連する問題