URL ルーティングを使用する PHP Web サイトを開発しています。HTML のすべてのパスを変更しなくても、サイトをhttp://site.example.com/からhttp://example.com/site/に移動できるように、サイトをディレクトリに依存しないようにしたいと考えています。css ファイルや画像など、ルーティングの対象外のファイルにリンクしているときに問題が発生します。
たとえばindex
、コントローラーのアクションのビューにwelcome
image が含まれているとしますimg/banner.jpg
。ページが URL http://site.example.com/welcomeでリクエストされた場合、ブラウザは画像をhttp://site.example.com/img/banner.jpgとしてリクエストしますが、これは問題ありません。しかし、ページがhttp://site.example.com/welcome/indexという URL でリクエストされた場合、ブラウザはそれがディレクトリであると判断し、 http://site.example.com/welcomewelcome
として画像を取得しようとします。 /img/banner.jpg、これは明らかに間違っています。
すでにいくつかのオプションを検討しましたが、それらはすべて不完全に思えます。
URL 書き換えを使用して、( *.css | *.js |...) または ( css/* | js/* |...) からの要求を正しいパスにリダイレクトします。
問題: すべての拡張子は、書き換え規則で指定する必要があります。誰かが新しいファイルタイプ (たとえば mp3 ファイル) を追加しても、それは書き換えられません。
php 関数を使用して、各相対パスに基本パスを追加します。例えば:
<img src="<?php echo url::base(); ?>img/banner.jpg" />
問題点:見た目が汚い。パスを含むcssおよびjsファイルは、PHP で処理する必要があります。
では、Web サイトのディレクトリを独立した状態に保つにはどうすればよいでしょうか。私が思いついた方法よりも優れた/よりクリーンな方法はありますか?