如何重定向 Ionic/website 中的子文件夹
How to redirect subfolders in Ionic/website
我目前有一个 ionic webapp,托管为 x url(例如 www.myApp.com)。我的应用程序有子文件夹,例如myApp.com/home 或 myApp.com/details。不幸的是,每当我刷新这些子文件夹中的任何一个时,我都会收到类似 'Cannot GET /home' 的错误(只有基础 URL/Domain 有效)。
如果可能,有没有办法在 Google 域上托管这些子文件夹(这样 GD 会自动将这些 link 重定向回 baes myApp.com link 如果它们被刷新)还是我需要在代码本身中做一些事情来完成这个?
编辑:我现在明白我必须使用我的网络服务器重新路由,这样我可以 return index.html 当用户刷新页面时 link例如(ionicSite.com/Page)。作为参考,我在下面包含了我的 server.js 文件:
var express = require('express');
var app = express(); // create our app w/ express
var morgan = require('morgan'); // log requests to the console (express4)
var bodyParser = require('body-parser'); // pull information from HTML POST (express4)
var cors = require('cors');
// Server Redirection changes
const targetURL = "www.ambitia.org";
const path = require ('path');
app.use(morgan('dev')); // log every request to the console
app.use(bodyParser.urlencoded({'extended':'true'})); // parse application/x-www-form-urlencoded
app.use(bodyParser.json()); // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
// app.use(methodOverride());
app.use(cors());
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'DELETE, PUT');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.use(express.static('www'));
app.set('port', process.env.PORT || 5000);
app.get('/home', (req,res) => {
console.log('You asked for my home!');
res.sendFile(path.resolve('/main-es2015.js'));
})
/**
app.get('/*', (req, res) => {
('Attempting the redirection goal');
res.sendFile(path.resolve(__dirname));
}) **/
app.listen(app.get('port'), function () {
console.log('Express server listening on port ' + app.get('port'));
});
如果我没理解错的话,你需要告诉你的服务器它应该将请求重定向到你的 index.html
以便 Ionic 可以处理路由。
在 Apache 上,您可以在根文件夹中添加一个 .htaccess
文件,内容如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
来源:https://router.vuejs.org/guide/essentials/history-mode.html#example-server-configurations
我目前有一个 ionic webapp,托管为 x url(例如 www.myApp.com)。我的应用程序有子文件夹,例如myApp.com/home 或 myApp.com/details。不幸的是,每当我刷新这些子文件夹中的任何一个时,我都会收到类似 'Cannot GET /home' 的错误(只有基础 URL/Domain 有效)。
如果可能,有没有办法在 Google 域上托管这些子文件夹(这样 GD 会自动将这些 link 重定向回 baes myApp.com link 如果它们被刷新)还是我需要在代码本身中做一些事情来完成这个?
编辑:我现在明白我必须使用我的网络服务器重新路由,这样我可以 return index.html 当用户刷新页面时 link例如(ionicSite.com/Page)。作为参考,我在下面包含了我的 server.js 文件:
var express = require('express');
var app = express(); // create our app w/ express
var morgan = require('morgan'); // log requests to the console (express4)
var bodyParser = require('body-parser'); // pull information from HTML POST (express4)
var cors = require('cors');
// Server Redirection changes
const targetURL = "www.ambitia.org";
const path = require ('path');
app.use(morgan('dev')); // log every request to the console
app.use(bodyParser.urlencoded({'extended':'true'})); // parse application/x-www-form-urlencoded
app.use(bodyParser.json()); // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
// app.use(methodOverride());
app.use(cors());
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'DELETE, PUT');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.use(express.static('www'));
app.set('port', process.env.PORT || 5000);
app.get('/home', (req,res) => {
console.log('You asked for my home!');
res.sendFile(path.resolve('/main-es2015.js'));
})
/**
app.get('/*', (req, res) => {
('Attempting the redirection goal');
res.sendFile(path.resolve(__dirname));
}) **/
app.listen(app.get('port'), function () {
console.log('Express server listening on port ' + app.get('port'));
});
如果我没理解错的话,你需要告诉你的服务器它应该将请求重定向到你的 index.html
以便 Ionic 可以处理路由。
在 Apache 上,您可以在根文件夹中添加一个 .htaccess
文件,内容如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
来源:https://router.vuejs.org/guide/essentials/history-mode.html#example-server-configurations