取り急ぎメモ
何をしたかったかメモ
- とあるサイト(Nginx+WordPress)のサブディレクトリだけをNext.jsで動かしたかった
- SEOも考えないといけないので、hoge.vercel.app のドメインでアクセスできなくしたかった
やったこと
next.config.js を修正
{
...
basePath: isProduction ? SUB_DIRECTORY : '',
assetPrefix: isProduction ? SUB_DIRECTORY : '',
// Imageコンポーネントを使う場合は basePath をsrcで指定しなければならない
publicRuntimeConfig: {
basePath: isProduction ? SUB_DIRECTORY : '',
}
...
}
routing -> 問題なし
JSまわり -> 問題なし
image -> 問題あり(404になってしまう)
ImageComponentを使うときは手動でサブディレクトリを追加せねばいけないらしい
もともとは basePath の設定でよかったぽいが、最近のバージョンだとダメらしい
参考: https://nextjs.org/docs/api-reference/next.config.js/basepath#images
→ MyImage コンポーネントを作成してごにょごにょした
import getConfig from "next/config";
import Image, { ImageProps } from "next/image";
const { publicRuntimeConfig } = getConfig();
export const MyImage = (props: ImageProps): JSX.Element => {
// eslint-disable-next-line jsx-a11y/alt-text
return <Image {...props} src={`${publicRuntimeConfig.basePath || ''}${props.src}`} />;
}
Nginx側でのリバプロ設定
location ^~ /hoge/ {
proxy_pass https://hoge.vercel.app/hoge/;
}