質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

Q&A

解決済

1回答

2245閲覧

smartyテンプレートとIE11について

xjaPANDA

総合スコア124

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

0グッド

0クリップ

投稿2017/01/18 01:30

独自のMVCフレームワークに、smarty3.1を利用していますが、Internet Explorer11で観覧した時だけ、トップのページ以外のページの画像のURLやリンクのULRがうまく表示されません。独自のフレームワークといっても構造は、index.php?にコントローラーとアクションパラメーターを渡した一般的なものです。

例えば、http://example.com/index/index/ では、Indexコントローラーのindexアクションを実行したページになりますが、これをトップページに設定しています。

この時に、Internet Explorer11で観覧した場合に、http://example.comにアクセスした場合には、問題なくしっかり表示されます。この場合、例えば、ロゴの画像のURLは、http://example.com/images/logo.png のように正常です。一方で、同一の内容である、http://example.com/index/index/ にアクセスした場合には、http://example.com/index/index/images/logo.png となり、ルートのURLがずれてしまうので、うまく表示されません。この解決方法に心当たりがありましたら、アドバイスください。

(Google Chrome, Firefox,Edge,Operaなどで観覧確認しても、問題なく、表示されます。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ソースを確認しても Smarty がテンプレート上に出力する画像の URL が意図通りではないという話ではなく、IE11 で閲覧した時にだけ画像がリダイレクトしてしまう、という理解で合っていますか?

そうであれば URL のリダイレクトがおかしいという話かと思うので、意図的に IE 分岐の記述がない限り Smarty は関係ないかと思います。

一度 IE のキャッシュをクリアしてみてはどうでしょうか。

また、.htaccess や httpd.conf 等の設定を記載された方が問題の手助けになりやすいかもしれません。

投稿2017/01/18 02:39

bezeklik

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xjaPANDA

2017/01/19 11:14

ありがとうございます。アドバイスをもとに少しづつ前進しております。 キャッシュを消しても変化はなく、いろいろ可能性をつぶしていくと、どうも、ビューの共通部分を書いたconfファイルに baseタグで、<base href="http://example.com/">としているのですが、このタグが、IE11では、反映されていないようでした。ただいま、baseタグは、IE11では表示できないかもしれないので、こちらの代替タグのようなものがないか調べてます。または、違うやり方の方が適しているのかもしれません。
bezeklik

2017/01/19 11:25

HTML自体の問題ということですね。 こんな情報もありました。 http://www.tohoho-web.com/html/base.htm 「<base> を head要素以外の場所に記述したり、相対URLを指定した場合、Internet Explorer では無効になるので注意してください。」 baseタグを使わないように書き換えるか、mod_rewrite等で強制的に書き換えるのが現実的かもしれませんね。
xjaPANDA

2017/01/19 23:53 編集

ありがとうございました。解決方法として、<base>タグを使わないやり方を選択しました。ルートのURLをそれぞれの箇所で読み込むことにしました。smartyテンプレートの共通箇所は、これまでは、すべて、confファイルに一括して定義していたので、その為に、confの中で、php変数が使えませんでした。これだと、変数に入れた、ルートのURLを読み込めないので、それらをパートごとにtplファイルに分けて記載し、そこに、変数を読み込むことで解決しました。ただ、mod_rewriteのほうでのやり方も興味がありますので、こちらも検索していろいろ調べております。まだできていませんが、こちらのほうが複雑ですね(涙)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問