gpt4 book ai didi

AngularJS:当 html5mode(true) 开启时,相对链接路径被破坏

转载 作者:行者123 更新时间:2023-12-04 17:18:57 25 4
gpt4 key购买 nike

我一直在寻找并找到了这个问题的“解决方案”,但我仍然无法让它正常工作。

场景:

我正在使用 UI 路由器构建一个 Angular(版本 1.2)网站,并在本地主机上的节点服务器上运行它。我试图通过 $locationProvider 并打开 html5(true) 使其具有“漂亮”的 url。我的网站在单击时工作正常,但是当我尝试导航到相对链接路径或刷新链接路径时,页面会中断。我还打算在完成后将此 web 应用程序部署到 Heroku:

相对链接路径:

http://localhost:8000/locksmith-services

页面输出结果
Cannot GET /locksmith-services

我采取的步骤:

1.) 在我的“index.html” 中,我已将基本网址设置为:
<base href="/"></base>

2.) 在我的 app.js 文件(用于 Angular)中,我将它写成如下:
// App Starts
angular
.module('app', [
'ui.router',
'ngAnimate',
'angular-carousel'
])
.config(['$urlRouterProvider', '$stateProvider', '$locationProvider', function($urlRouterProvider, $stateProvider, $locationProvider) {
$urlRouterProvider.otherwise("/");

$stateProvider
.state('home', {
url: '/',
templateUrl: 'pages/home.html',
controller: 'homeCtrl'
})
.state('services', {
url: '/locksmith-services',
templateUrl: 'pages/locksmith-services.html',
controller: 'servicesCtrl'
})
.state('locations', {
url: '/locksmith-locations',
templateUrl: 'pages/locksmith-locations.html'
})
.state('payment', {
url: '/locksmith-payment',
templateUrl: 'pages/locksmith-payment.html'
})
// use the HTML5 History API
$locationProvider.html5Mode(true);
}])

3.) 在我的导航中,我的 html 写为:
<div class="wrapper">
<a ui-sref="home">
<img src="images/logo.png" class="logo" alt="Austin Texas Locksmith" />
</a>
</div>
<nav class="row navigation">
<a class="mobile33" ui-sref="services" ui-sref-active="active" class="active">Services</a>
<a class="mobile33" ui-sref="locations" ui-sref-active="active">Locations</a>
<a class="mobile33" ui-sref="payment" ui-sref-active="active">Payment</a>
</nav>

4.) 我的 server.js 文件(节点服务器)
var express = require('express');
var app = express();

app.use(express.static(__dirname + '/front'));
var port = process.env.PORT || 8000;
app.listen(port);

最好的解决方案是什么?在此先感谢您的帮助。

最佳答案

感谢@trehyu 帮助我得到这个答案。

就像他写的那样,我需要在我的 server.js 文件上设置一些东西,将用户重定向到我的“index.html”文件。

所以取决于你的文件结构......

之前 (不工作)

var express = require('express');
var app = express();

app.use(express.static(__dirname + '/front'));
var port = process.env.PORT || 8000;
app.listen(port);

(在职的)
var express = require('express');
var app = express();

app.use('/js', express.static(__dirname + '/front/js'));
app.use('/build', express.static(__dirname + '/../build'));
app.use('/css', express.static(__dirname + '/front/css'));
app.use('/images', express.static(__dirname + '/front/images'));
app.use('/pages', express.static(__dirname + '/front/pages'));

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

var port = process.env.PORT || 8000;
app.listen(port);

我希望这对其他人有帮助!

关于AngularJS:当 html5mode(true) 开启时,相对链接路径被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26066691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com