0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

XServer に React + TypeScript プロジェクトを公開する際の注意点

Posted at

はじめに

React(+ TypeScript)で構築した Web アプリを XServer 上に公開しようとした際、いくつかの制限や注意点に直面しました。

この記事では、実際のデプロイ経験をもとに「XServer 環境で React アプリを公開する際の注意点」と「その対処方法」についてまとめています。

想定構成

  • フロントエンド:React + TypeScript
  • フレームワーク:Next.js(App Router + output: 'export' による静的エクスポート)
  • ホスティング:XServer(スタンダードプラン)
  • デプロイ方法:ビルド済み HTML ファイルを FTP でアップロード

XServer特有の注意点・落とし穴

1. 動的ルーティングが利用できない

/XXXXX/[id] → /XXXXX/123 → 404 エラー

XServer はサーバー側でのルーティング処理に対応していないため、ビルド時に生成されていない URL にアクセスすると 404 になります。

解決策

  • Next.js の generateStaticParams() を利用して、必要なルートをすべて静的に生成する
  • ビルド後に /XXXXX/id/index.html のような構成に変換するスクリプトを実行する

2. 投稿データの変更が即時反映されない

ヘッドレス CMS(例:WordPress)から取得しているデータが更新されても、out/ 以下の HTML は自動で更新されません。

解決策

  • 投稿のたびに再ビルドを行い、out/ ディレクトリを再アップロードする
  • Webhook + GitHub Actions を利用し、自動でビルド・デプロイを行う仕組みを構築する

3. URL 末尾のスラッシュによる表示エラー

URL の末尾にスラッシュがあると、ページが正しく表示されない場合があります。

解決策

  • next.config.jstrailingSlash: true を設定する
  • もしくは、ビルド後にファイル名を index.html に変換するスクリプトを使用する

4. HTTPS リダイレクトが効かない

XServerのデフォルト設定では、HTTP アクセスを HTTPS に自動リダイレクトしてくれない場合があります。
そのため、ユーザーが http:// でアクセスすると、セキュリティ上問題があるページとして表示されることがあります。

解決策

.htaccess に以下のリダイレクト設定を追加することで、HTTP アクセスを HTTPS に強制できます。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

さいごに

XServerは低コストかつ信頼性の高い共有レンタルサーバーですが、サーバーサイドでの動的処理が行えないため、React や Next.js といったモダンな構成を運用するには注意が必要です。

しかし、以下のような工夫を取り入れることで、十分に安定した運用が可能です。

  • 動的ルーティングへの対応(事前ビルド・ルート変換)
  • 投稿更新に対応する自動ビルド・自動デプロイの仕組み作り
  • HTTPS 対応や URL 最適化のための .htaccess 設定

これから XServer 上で React / Next.js を運用しようと考えている方の参考になれば幸いです。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?