LoginSignup
8
3

More than 5 years have passed since last update.

herokuapp.comから独自ドメインに301リダイレクト【Nuxt.js】

Last updated at Posted at 2019-04-25

この記事を書いた理由

Railsなどで301リダイレクトをかける記事はかなり存在しましたが、Nuxtで301リダイレクトをかける記事はあまり見かけなかったので書くことにしました。
参考になればと思います。

リポジトリ

現状

herokuにnuxt.jsアプリをデプロイしてみました。

しかし

https://kota-portfolio.herokuapp.com
でも
https://portfolio.nyanko-kota.com

でも同じサイトにアクセスできるようになっています。

2つのドメインで1つのサイトにアクセスできる状況はSEO的によくありません。

https://kota-portfolio.herokuapp.com
にアクセスされた際
https://portfolio.nyanko-kota.com
リダイレクトをかけることで正規化を行います。

Herokuでは.htaccessが使えない!!

はい、使えませんでした......

serverMiddlewareを使って実装

今回はフレームワークを使わずserverMiddlewareを使って実装したいと思います。

まず、nuxt.config.jsに以下のコードを追記します。

nuxt.config.js
  /*
  ** 301redirect
  */
  serverMiddleware: [
    '~/redirect-to-nyanko-kota.com.js'
  ],

redirect-to-nyanko-kota.com.jsの部分は自分の好きなファイル名で大丈夫です。

次にルートに先ほど決めたファイル名のファイルを作成します

$ touch redirect-to-nyanko-kota.com.js

これでredirect-to-nyanko-kota.com.jsというファイルが作成されたかと思います。

このファイルに以下のコードを書いていきます。

redirect-to-nyanko-kota.com.js
module.exports = function (req, res, next) {
  const host = req.headers.host
  const url = req.url
  const env = process.env.NODE_ENV
  const canonicalDomain = 'portfolio.nyanko-kota.com'

  if (env === 'production' && host !== canonicalDomain) {
    res.writeHead(301, { Location: 'https://' + canonicalDomain + url })
    return res.end()
  }

  return next()
}

const canonicalDomain = 'portfolio.nyanko-kota.com'の部分には
リダイレクトさせたいURLを代入してください。

これでリダイレクトされるようになったかと思います。

ソースコードはこちらで公開しています。
https://github.com/nyanko-kota/Portfolio
良ければ御覧ください。

参考文献

この記事は以下の情報を参考にして執筆しました。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3