ローカル(Tomcat)、およびGoogleAppEngineとHerokuにデプロイしたシンプルなアプリケーションがあります。
アプリはJSTLタグを使用し、すべてのデプロイメントで正常に機能します。ただし、URLタグ(<c:url value="/someUrl"/>
)は、Herokuでのみ、すべてを台無しにする余分なスラッシュを追加します。これが私が意味することです:
<c:url value='/laundryLists/search.htm'/>
アプリが「testApp」のコンテキストでデプロイされている私のローカルTomcatでは、上記のコードを切り取ると、ページに次の文字列が生成されます。
"/testApp/laundryLists/search.htm"
どちらが正しい。
アドレスtestApp.appspot.comにある私のGAEデプロイ済みアプリでは、上記のコードスニペットは次を生成します。
"/laundryLists/search.htm"
ここではアプリのコンテキストが「/」(ルート)であるため、これは正しいです。
「testApp.herokuapp.com」にデプロイされている私のHerokuバージョンでは
まったく同じコードが生成します:
"//laundryLists/search.htm"(先頭にスラッシュが2つ付いていることに注意してください)
リンクに配置されている場合など、これは間違っています
<a href="<c:url value='/laundryLists/search.htm'/>">whatever</a>
リンクURLは次のようになります。
http://laundryLists/search.htm
これは明らかに間違っています。
他のJSTLタグ(「forEach」など)がHerokuで正常に機能することは言及する価値があります。
だから私の質問は、なぜこれがHerokuで起こっているのか、そしてどうすればそれを修正できますか(URLをハードコーディングする以外に)?