• 締切済み

safariでのbase hrefの仕様

safariでのbase hrefの仕様 動的URLを静的なURLに見せるためにmod_rewriteを使用しています。 ディレクトリで分けているためbase hrefを指定していますが、 safariのみ表示やリンクがおかしくなります。 <base href="http://xxx.xx/">として <a href="/index.html">リンク</a>をクリックすると http://index.thml/となってしまいます。 最初の/(スラッシュ)を無くし<a href="index.html">リンク</a>にするとsafariでは正しく動作しますが、 IEでhttp://xxx.xx/に移動したい場合、http://xxx.xx/aaa/から<a href="index.html">リンク</a>をクリックすると http://xxx.xx/aaa/index.htmlになります。 もともとは一つのPHPファイルをmod_rewriteでディレクトリによって分けているので../などを条件によって付け足すと相当な時間がかかります。 おそらく同じ理由でCSSや画像も読み込まれていません。 safariではbase hrefは反映されないのでしょうか? 何か対処方法があればおしえてください。 よろしくお願いいたします。

みんなの回答

回答No.1

HTML4, 5/XHTMLでは、<base>は<head>の中にしか入れられません。 <head>に書いた場合は、ドキュメント全体に適用されますので、<base target="_blank">などにしている場合は、 baseを適用したくない<a>に対して、target="_self"などが必要になります。 HTML3.2(DOCTYPEなし)では<body>の中に入れられるので、 後方互換モードや、文法違反の対応の仕方によっては、<body>の中に書かれた<base>も有効になります。 この場合は、<base>が書かれた場所以降にのみ<base>の内容が適用されます。 Safariは標準モードでの<body>内に書かれた<base>は無視しますので、<head>内に書くようにして下さい。