All Projects → nuxt-community → Redirect Module

nuxt-community / Redirect Module

Licence: mit
No more cumbersome redirects!

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Redirect Module

Sitemap Module
Sitemap Module for Nuxt
Stars: ✭ 539 (+129.36%)
Mutual labels:  nuxt, nuxtjs, seo
nuxt-jsonld
A Nuxt.js module to manage JSON-LD in Vue component.
Stars: ✭ 198 (-15.74%)
Mutual labels:  seo, nuxt, nuxtjs
nuxt-seomatic-meta
A module for connecting Nuxt.js to the Craft CMS SEOmatic plugin via GraphQL. Nuxt-o-matic!
Stars: ✭ 28 (-88.09%)
Mutual labels:  seo, nuxt, nuxtjs
Vuecnodejs
⚽️🎉Vue初/中级项目,CnodeJS社区重构。( a junior project of Vue.js, rewrite cnodejs.org ) 预览(DEMO):
Stars: ✭ 705 (+200%)
Mutual labels:  nuxt, nuxtjs, seo
Nuxt Coreui
💫 NuxtJS + CoreUI Project — Unofficial Nuxt + CoreUI project, free to use boilerplate for every need.
Stars: ✭ 166 (-29.36%)
Mutual labels:  nuxt, nuxtjs
Vue Soundcloud
🎧 A SoundCloud client built with Vue and Nuxt
Stars: ✭ 141 (-40%)
Mutual labels:  nuxt, nuxtjs
Nuxt Imagemin
Nuxt module to minify your images. Works with: png, jpeg, gif, and svg
Stars: ✭ 170 (-27.66%)
Mutual labels:  nuxt, nuxtjs
Python Module
Write Nuxt.js applications using Python! [Experimental]
Stars: ✭ 181 (-22.98%)
Mutual labels:  nuxt, nuxtjs
Blog Module
Build your blog with @nuxt
Stars: ✭ 130 (-44.68%)
Mutual labels:  nuxt, nuxtjs
Nuxt Client Init Module
Provide client version of nuxtServerInit
Stars: ✭ 176 (-25.11%)
Mutual labels:  nuxt, nuxtjs
Feed Module
Everyone deserves RSS, ATOM and JSON feeds!
Stars: ✭ 182 (-22.55%)
Mutual labels:  nuxt, nuxtjs
Nuxt Payload Extractor
Nuxt.js module that makes `nuxt generate` command to store html and payload separately.
Stars: ✭ 140 (-40.43%)
Mutual labels:  nuxt, nuxtjs
Nuxpress
A Nuxt-based blogging engine and boilerplate
Stars: ✭ 135 (-42.55%)
Mutual labels:  nuxt, nuxtjs
Nuxt Shopify
🛍 Seamless Shopify Buy SDK integration with Nuxt.js.
Stars: ✭ 210 (-10.64%)
Mutual labels:  nuxt, nuxtjs
Surmon.me
🆒 My personal website and blog, powered by @vuejs (3)
Stars: ✭ 1,767 (+651.91%)
Mutual labels:  nuxt, nuxtjs
Press
Minimalist Markdown Publishing for Nuxt.js
Stars: ✭ 181 (-22.98%)
Mutual labels:  nuxt, nuxtjs
Gtm Module
Google Tag Manager Module for Nuxt.js
Stars: ✭ 187 (-20.43%)
Mutual labels:  nuxt, nuxtjs
Bael Template
Brutalist Blog theme for Netlify CMS
Stars: ✭ 187 (-20.43%)
Mutual labels:  nuxt, nuxtjs
Vuemmerce
👉 Responsive ecommerce template 🛒 built with Vue.js and Nuxt.js
Stars: ✭ 223 (-5.11%)
Mutual labels:  nuxt, nuxtjs
Nuxt Netlify Cms Module
Easy Netlify CMS integration with nuxt.js
Stars: ✭ 195 (-17.02%)
Mutual labels:  nuxt, nuxtjs

Redirect Module 🔀 No more cumbersome redirects!

npm version npm downloads Circle CI Codecov Dependencies Standard JS

Nuxt module to dynamically redirect initial requests

📖 Release Notes

Features

Redirecting URLs is an often discussed topic, especially when it comes to SEO. Previously it was hard to create a "real" redirect without performance loss or incorrect handling. But this time is over!

Setup

  1. Add the @nuxtjs/redirect-module dependency with yarn or npm to your project
  2. Add @nuxtjs/redirect-module to the modules section of nuxt.config.js:
  3. Configure it:
{
  modules: [
    ['@nuxtjs/redirect-module', {
      // Redirect option here
    }]
  ]
}

Using top level options

{
  modules: [
    '@nuxtjs/redirect-module'
  ],
  redirect: [
    // Redirect options here
  ]
}

Options

rules

  • Default: []

Rules of your redirects.

onDecode

  • Default: (req, res, next) => decodeURI(req.url)

You can set decode.

onDecodeError

  • Default: (error, req, res, next) => next(error)

You can set callback when there is an error in the decode.

statusCode

  • Default: 302

You can set the default statusCode which gets used when no statusCode is defined on the rule itself.

Usage

Simply add the links you want to redirect as objects to the module option array:

redirect: [
  { from: '^/myoldurl', to: '/mynewurl' }
]

You can set up a custom status code as well. By default, it's 302!

redirect: [
  { from: '^/myoldurl', to: '/mynewurl', statusCode: 301 }
]

As you may have already noticed, we are leveraging the benefits of Regular Expressions. Hence, you can fully customize your redirects.

redirect: [
  { from: '^/myoldurl/(.*)$', to: '/comeallhere' }, // Many urls to one
  { from: '^/anotherold/(.*)$', to: '/new/$1' } // One to one mapping
]

Furthermore you can use a function to create your to url as well 👍 The from rule and the req of the middleware will be provided as arguments. The function can also be async!

redirect: [
  {
    from: '^/someUrlHere/(.*)$',
    to: (from, req) => {
      const param = req.url.match(/functionAsync\/(.*)$/)[1]
      return `/posts/${param}`
    }
  }
]

And if you really need more power... okay! You can also use a factory function to generate your redirects:

redirect: async () => {
  const someThings = await axios.get("/myApi") // It'll wait!
  return someThings.map(coolTransformFunction)
}

Now, if you want to customize your redirects, how your decode is done or when there is some error in the decode, you can also:

redirect: {
  rules: [
    { from: '^/myoldurl', to: '/mynewurl' }
  ],
  onDecode: (req, res, next) => decodeURI(req.url),
  onDecodeError: (error, req, res, next) => next(error)
}

ATTENTION: The factory function must return an array with redirect objects (as seen above).

Gotchas

The redirect module will not work in combination with nuxt generate. Redirects are realized through a server middleware, which can only react when there is a server running.

Development

  1. Clone this repository
  2. Install dependencies using yarn install or npm install
  3. Start development server using npm run dev

License

MIT License

Copyright (c) Alexander Lichter [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].