電子書籍の厳選無料作品が豊富!

ホームページを公開するにあたり、 http://www.ooo.com/xxx というアドレスでの公開が必要です。
現状、http://www.ooo.com/xxx と http://www.ooo.com/xxx/ でアクセスした場合に表示が異なり困っています。

ソースを見るとどちらも同じファイル(index.php)を読み込んでいますが、
「/」無しでアクセスした場合、cssを読み込んでいないような表示になります。

.htaccess を使って /無しでアクセスした場合に「/」を付加するようなことは可能なのでしょうか。

ネットを調べ、
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.[^/\.]+$
RewriteRule .* %{REQUEST_URI}/ [L,R]

上記は試しましたが、できませんでした。
どなたか、宜しくお願い致します。

A 回答 (1件)

スタイルシートへのパスを絶対配置にすればすむだけでは?


 そのほうが絶対に楽です。

HTTPサーバーは
http://hoge.com/abc/efg
という要求に対して、
・efgというファイルを探し、
・ファイルがなければディレクトリとみなして、
  /efgを開いてみて、
   その中にDIRECTORY_INDEXで指定されたファイルがあればそれを
   DIREXTORY一覧を表示する設定ならそれを
・ファイルもディレクトリない場合はPATH_INFOに/efgを格納して、/abcに対して同様な処理をしていきます。
・トップディレクトリまで進んで、DIRECTORY_INDEXに指定されたファイルを表示または実行します。

 そのため、ブラウザが判断するカレントは、http://hoge.com/abc とhttp://hoge.com/abc/ は異なりませんが、index.phpなどをトップにおいている場合は、判断を間違う可能性がありますが、それはサーバーと言うよりブラウザの判断ですから、スタイルシートを絶対パスで指定するほうが確実です。
 すなわち
<link rel="stylesheet" type="text/css" media="screen" href="/styleSheet/standard.css">
のように指定します。
 PATH_INFO・・・をどのように指定しても、
http://hoge.com/abc/efg だろうが、http://hoge.com/abc/efg/hijだろうが気にしなくて良いです。

 ちなみに私はテスト用にapacheを入れています。それとfirefoxのアドオンServer Switcher( https://addons.mozilla.jp/firefox/details/2409 )でローカルサーバーとリモートサーバーを切り替えています。
 ローカルサーバーがないと、絶対パスで指定してあるスタイルシートを利用しずらいですね。
    • good
    • 0
この回答へのお礼

ありがとうございます!
ご連絡遅くなり、申し訳ありませんでした。

仰るとおり、CSSのパスの問題でした。

原因としては、サーバーがマルチドメイン設定ができる関係なのか、CSS、画像パスなどを相対パスで記述する場合と、絶対パスの場合で表示、動作が異なる事が原因でした。

数日間悩んだあげく、放置していた所でした。
助かりました!

お礼日時:2013/02/22 14:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!