Next.js刷新页面后出现404错误
Next.js 404 error after refreshing the page
我尝试学习 Next.js 但我有一个小问题。
这是我的测试代码:
import Link from 'next/link';
export default () => (
<p>Hallo next <Link href="/abouts?id=2" as='/abouts/1'><a>About</a></Link></p>
)
如果我从 index.js 页面单击 link About,我的 url 看起来 '/about/1/'
并且工作正常,但是如果我刷新页面,我会收到错误 404。如果我在浏览器中输入 /abouts?id=2"
并刷新页面,一切正常。你知道我该如何解决这个问题吗?
我想要 link 喜欢
/about/1/
The second as
parameter for push
and replace
is an optional decoration of the URL. Useful if you configured custom routes on the server.
因此,要实现此行为,您需要在 server.js
中配置自定义路由——例如使用 express
。用这个扩展你的服务器:
const next = require('next');
const express = require('express');
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev });
const handle = app.getRequestHandler();
app.prepare().then(() => {
const server = express();
// Nice permalinks for pages.
// Sets up a custom route, that then uses next.js to render the about page.
server.get('/about/:id', (req, res) => {
const params = { id: req.params.id };
return app.render(req, res, '/about', params);
});
// For all other routes, use next.js.
server.get('*', (req, res) => {
return handle(req, res);
});
server.listen(port, '0.0.0.0', err => {
if (err) throw err;
console.log(`${'\u2705'} Ready on http://localhost:${port}`);
});
});
您可以使用 .htaccess 文件,例如对于使用 nextjs 创建门户的域 xyz.com 您可以使用此文件:
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
RewriteRule ^ /index.html [L]
我尝试学习 Next.js 但我有一个小问题。 这是我的测试代码:
import Link from 'next/link';
export default () => (
<p>Hallo next <Link href="/abouts?id=2" as='/abouts/1'><a>About</a></Link></p>
)
如果我从 index.js 页面单击 link About,我的 url 看起来 '/about/1/'
并且工作正常,但是如果我刷新页面,我会收到错误 404。如果我在浏览器中输入 /abouts?id=2"
并刷新页面,一切正常。你知道我该如何解决这个问题吗?
我想要 link 喜欢
/about/1/
The second
as
parameter forpush
andreplace
is an optional decoration of the URL. Useful if you configured custom routes on the server.
因此,要实现此行为,您需要在 server.js
中配置自定义路由——例如使用 express
。用这个扩展你的服务器:
const next = require('next');
const express = require('express');
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev });
const handle = app.getRequestHandler();
app.prepare().then(() => {
const server = express();
// Nice permalinks for pages.
// Sets up a custom route, that then uses next.js to render the about page.
server.get('/about/:id', (req, res) => {
const params = { id: req.params.id };
return app.render(req, res, '/about', params);
});
// For all other routes, use next.js.
server.get('*', (req, res) => {
return handle(req, res);
});
server.listen(port, '0.0.0.0', err => {
if (err) throw err;
console.log(`${'\u2705'} Ready on http://localhost:${port}`);
});
});
您可以使用 .htaccess 文件,例如对于使用 nextjs 创建门户的域 xyz.com 您可以使用此文件:
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
RewriteRule ^ /index.html [L]