我按照以下步骤在cPanel上部署了nextjs。
转到package.json并添加以下行:"homepage": "http://afsanefadaei.ir"
运行next build
将.next
文件夹作为我的构建文件夹
转到cpanel >> file manager >> public_html
文件夹并将.next
文件夹的内容上传到此目录
添加或编辑以下文件:.htaccess
至:
但是当我访问该网站时,我会面对:
你知道这是怎么回事吗?
答案 0 :(得分:5)
我将out
文件夹(通过npm run build && npm run export
生成)上传到public_html
并创建了.htaccess
文件,如
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-L
RewriteRule . /index.html [L]
</IfModule>
问题:当我在另一条路线上刷新页面时,例如说
/about
,它带来了index.js
页面的内容,但是URL不会更改为/
答案 1 :(得分:2)
WITH RECURSIVE cte (id, name, parent_id, dir) AS (
SELECT id, name, parent_id, cast(null as char(10)) as dir
FROM organization
WHERE id = 1
UNION
SELECT t1.id, t1.name, t1.parent_id, ifnull(t2.dir, 'down')
FROM organization t1
INNER JOIN cte t2 ON t1.parent_id = t2.id and ifnull(t2.dir, 'down')='down'
UNION
SELECT t1.id, t1.name, t1.parent_id, ifnull(t2.dir, 'up')
FROM organization t1
INNER JOIN cte t2 ON t2.parent_id = t1.id and ifnull(t2.dir, 'up')='up'
)
SELECT id, name, parent_id FROM cte;
没有index.html文件。.next
而不是next export
。但是最重要的是数字1,请确保next build
文件夹中有index.html
。
答案 2 :(得分:0)
将其部署为NodeJS应用程序。
答案 3 :(得分:0)
我可以使用上述答案之一托管应用程序,但是当我刷新页面时,应用程序将崩溃或转到初始路由。
我就是这样解决这个问题的(解决方案取自next.js官网)。
npm run build
app.js
并复制以下代码const {
createServer
} = require("http");
const {
parse
} = require("url");
const next = require("next");
const port = process.env.PORT || 3000;
// Create the Express-Next App
const app = next({
dev:false
});
const handle = app.getRequestHandler();
app
.prepare()
.then(() => {
createServer((req, res) => {
const parsedUrl = parse(req.url, true);
const {
pathname,
query
} = parsedUrl;
handle(req, res, parsedUrl);
console.log("pathname", pathname);
}).listen(port, (err) => {
if (err) throw err;
console.log(`> Ready on http://localhost:${port}`);
});
})
.catch((ex) => {
console.error(ex.stack);
process.exit(1);
});
有关更多信息,请查看 Next.js Custom Server
的官方文档