質問編集履歴
2
test
CHANGED
File without changes
|
test
CHANGED
@@ -114,7 +114,7 @@
|
|
114
114
|
|
115
115
|
|
116
116
|
|
117
|
-
###
|
117
|
+
### 試したこと
|
118
118
|
|
119
119
|
|
120
120
|
|
@@ -124,7 +124,7 @@
|
|
124
124
|
|
125
125
|
|
126
126
|
|
127
|
-
#### 1. Next.js でレスポンスの location のドメインを書き換える
|
127
|
+
#### 案 1. Next.js でレスポンスの location のドメインを書き換える
|
128
128
|
|
129
129
|
|
130
130
|
|
@@ -132,41 +132,55 @@
|
|
132
132
|
|
133
133
|
|
134
134
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
Apache が返すリダイレクト
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
135
|
+
それと、そうすると Next.js が `/blog` にリダイレクトし、続いて Apache が `/blog/` にリダイレクトし、更に Next.js が……と、無限ループになってしまうので、この方法は断念しました。
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
#### 案 2. Apache が返すリダイレクト先をパスのみにする
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
Apache が返すリダイレクトレスポンスを、Next.js が返すものと同じように、ドメインを含まない `/blog/` のみにすれば、`b.example.com` がクライアントに伝わることもないと思ったのですが、こちらも無限ループが発生してしまいます。
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
#### 案 3. 特定のパスのみ Trailing Slash を付ける
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
Next.js で、特定のパスのみ、Trailing Slash を付けるという設定ができればいいと思って調べたのですが、方法を見つけられませんでした。
|
152
|
+
|
153
|
+
|
148
154
|
|
149
155
|
もしこれが実現できたら、Next.js 側で必ず Trailing Slash が付与されるため、Apache が Trailing Slash のためにリダイレクトすることはなくなります。
|
150
156
|
|
151
157
|
|
152
158
|
|
153
|
-
ちなみに、
|
159
|
+
ちなみに、Vercel には Trailing Slash について何もしないという設定があるのですが、
|
154
|
-
|
160
|
+
|
155
|
-
|
161
|
+
Next.js には Trailing Slash を付けるか付けないかのどちらかのオプションしかなさそうでした。
|
162
|
+
|
163
|
+
|
164
|
+
|
156
|
-
|
165
|
+
実現できたらこの方法が一番副作用が少なくてよいのですが。
|
157
|
-
|
158
|
-
|
166
|
+
|
167
|
+
|
168
|
+
|
159
|
-
#### 4. Apache にリクエストを転送する際に Trailing Slash を付ける
|
169
|
+
#### 案 4. Apache にリクエストを転送する際に Trailing Slash を付ける
|
160
|
-
|
161
|
-
|
162
|
-
|
170
|
+
|
171
|
+
|
172
|
+
|
163
|
-
Next.js に来たアクセスを Apache に転送する際に、Trailing Slash を付けられないかと思ったのですが、
|
173
|
+
Next.js に来たアクセスを Apache に転送する際に、Trailing Slash を付けられないかと思ったのですが、Wordpress は管理画面などでファイル名のみを指定した相対リンクが作られるので、Trailing Slash なしだとリンク先が変わってしまい、ダメでした。
|
174
|
+
|
164
|
-
|
175
|
+
現在のアドレスと相対パスから、絶対パスを生成するのはブラウザなので、Next.js の裏側でだけ Trailing Slash を付けても意味がありません。
|
176
|
+
|
177
|
+
|
178
|
+
|
165
|
-
|
179
|
+
一応試した方法を書いておきます。
|
166
|
-
|
167
|
-
|
168
|
-
|
180
|
+
|
181
|
+
|
182
|
+
|
169
|
-
Next.js
|
183
|
+
現在の Next.js の `next.config.js` の設定は以下のようになっています。
|
170
184
|
|
171
185
|
|
172
186
|
|
@@ -192,15 +206,19 @@
|
|
192
206
|
|
193
207
|
|
194
208
|
|
195
|
-
単純に `destination` の `:path*` の後ろに `/` を付け
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
209
|
+
これに対して、単純に `destination` の `:path*` の後ろに `/` を付けてみたのですが、ファイルにも `/` が付いてしまい、うまくいきませんでした。
|
210
|
+
|
211
|
+
例えば、`app.css` が `app.css/` になってしまいました。
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
`:path*` の部分をもう少し詳細に設定する方法があればとも思ったのですが、前述の相対パスの問題があったため諦めました。
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
#### 案 5. Apache & Wordpress で Trailing Slash なしを受け入れる
|
204
222
|
|
205
223
|
|
206
224
|
|
@@ -282,9 +300,15 @@
|
|
282
300
|
|
283
301
|
mod_rewrite で `/blog/hoge` を `/index.php` に渡すことができているので、同じようにして `/blog` も `index.php` に渡すことができそうな気がするのですが、mod_rewrite に詳しくなく、やり方がわかりません。
|
284
302
|
|
303
|
+
|
304
|
+
|
285
|
-
でも、
|
305
|
+
ただ、この方法でうまくいったとしても、他の案と同じように、リンク先が相対パスになってるリンクは機能しません。
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
|
310
|
+
|
286
|
-
|
311
|
+
いくつか案を考えてそれぞれ試してみましたが、問題なく解決できそうなのは 案 3. だけでした。
|
287
|
-
|
288
312
|
|
289
313
|
|
290
314
|
|
1
思い付いたけど諦めた解決案を追記しました。最後の解決案に一番期待している旨を追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -132,7 +132,15 @@
|
|
132
132
|
|
133
133
|
|
134
134
|
|
135
|
-
#### 2.
|
135
|
+
#### 2. Apache が返すリダイレクト先をパスのみにする
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
Apache が返すリダイレクトレスポンスを、Next.js が返すものと同じように、ドメインを含まない `/blog/` のみにすれば、`b.example.com` がクライアントに伝わることもないと思ったのですが、そうすると、Next.js が `/blog` にリダイレクトし、続いて Apache が `/blog/` にリダイレクトし、更に Next.js が……と、無限ループになってしまうので、この方法は断念しました。
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
#### 3. 特定のパスのみ Trailing Slash を付ける
|
136
144
|
|
137
145
|
|
138
146
|
|
@@ -148,7 +156,7 @@
|
|
148
156
|
|
149
157
|
|
150
158
|
|
151
|
-
####
|
159
|
+
#### 4. Apache にリクエストを転送する際に Trailing Slash を付ける
|
152
160
|
|
153
161
|
|
154
162
|
|
@@ -192,7 +200,7 @@
|
|
192
200
|
|
193
201
|
|
194
202
|
|
195
|
-
####
|
203
|
+
#### 5. Apache & Wordpress で Trailing Slash なしを受け入れる
|
196
204
|
|
197
205
|
|
198
206
|
|
@@ -272,6 +280,14 @@
|
|
272
280
|
|
273
281
|
|
274
282
|
|
283
|
+
mod_rewrite で `/blog/hoge` を `/index.php` に渡すことができているので、同じようにして `/blog` も `index.php` に渡すことができそうな気がするのですが、mod_rewrite に詳しくなく、やり方がわかりません。
|
284
|
+
|
285
|
+
でも、この解決案が一番現実的な気がしています。
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
|
290
|
+
|
275
291
|
### 補足情報(FW/ツールのバージョンなど)
|
276
292
|
|
277
293
|
|