Nextjs12配置“伪静态”

本文介绍了伪静态技术,即动态网址呈现静态形式,以提高搜索引擎友好性。在Next.js框架中,可以通过自定义服务或配置rewrites实现URL重写。通过示例代码展示了如何将'/a.html'重定向到'/b'和'/b.html'重定向到'/a'。此外,还提及了Next.js的静态HTML导出功能和创建对应静态页面的选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

伪静态

伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。伪静态技术是指展示出来的是以html一类的静态页面形式,但其实是用PHP一类的动态脚本来处理的。

Web服务器

传统的Web服务器有IIS、apache、ningx等,他们均通过配置伪静态实现URL重写的目的,

现在,使用Nodejs中的核心模块http的API,就可以轻松创建也可以非常轻松的构建一个Web服务器了,并且运用其中的路由功能即可轻松实现URL重写的目的。

实现URL重写

众所周知,Nextjs 框架底层 HTTP 平台默认是基于 nodejs 实现的,因此可以通过自定义服务配置路由来重写URL,或者直接使用Nexjs封装好的重写方法(rewrites)来实现URL重写。

自定义服务

更新了 package.json 中的脚本。

{
  "scripts": {
    "dev": "node server.js",
    "build": "next build",
    "start": "NODE_ENV=production node server.js"
  }
}

在根目录创建server.js文件

const { createServer } = require('http')
const { parse } = require('url')
const next = require('next')

const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()

app.prepare().then(() => {
  createServer((req, res) => {
    const parsedUrl = parse(req.url, true)
    const { pathname, query } = parsedUrl

    //下面这个例子使 /a.html 路由解析为./pages/b,以及/b.html 路由解析为./pages/a;
    if (pathname === '/a.html') {
      app.render(req, res, '/b', query)
    } else if (pathname === '/b.html') {
      app.render(req, res, '/a', query)
    } else {
      handle(req, res, parsedUrl)
    }
  }).listen(3000, err => {
    if (err) throw err
    console.log('> Ready on http://localhost:3000')
  })
})

自定义服务官方文档

配置rewrites路由分发

在next.config.js配置rewrites。rewrites官方文档

module.exports = {  
  ...
  async rewrites() {  
     return [  
         {  
               source: '/a.html',  
               destination: '/b',  
          },  
          {  
                source: '/b.html',  
                destination: '/a',  
           },     
     ]
  }
}

总结

上述方法均针对动态页面进行url重写,我们也可以利用nextjs的实现静态 HTML 导出(nextjs官方文档),或者直接创建a.html.js的文件,nextjs的路由即可自动识别路径为a.html。

文章来源:Nextjs12配置“伪静态” | 猿小莫的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值