0

この質問の重複の可能性をいくつか調べましたが、書き換えルールはプロジェクトにかなり固有であるため、適切な答えを見つけることができませんでした。

問題の核心?特定のファイル (CSS、JS、および画像) に対する要求は、htaccess ファイルによって (私が思うに) 書き換えられています。

次のように指示するように htaccess ファイルを設定しています。

Options +FollowSymLinks
RewriteEngine on
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controller=$1&action=$2&id=$3 [NC,L]

localhost/framework/booking/dashboard のような URL を受け取り、localhost/framework/index.php?controller=booking&action=dashboard に書き換えます。

ローカルの www フォルダー内の関連ファイル構造は次のようになります。

フレームワーク
 -index.php
 -htaccess
 -views -
  予約
   -dashboard.php
   -wuxia-blue.css

dashboard.php の CSS リンクは次のとおりです。

<link rel='stylesheet' type='text/css' href="wuxia-blue.css">

行われている HTTP リクエストは次のようです: /framework/booking/wuxia-blue.css

次のようにする必要があります: /framework/views/booking/wuxia-blue.css

理想的には、次のようなものを使用したいと思います

href="<?php echo(CSS . "wuxia-blue.css"); ?>".

CSS はアプリケーションで定義された定数であり、wuxia-blue.css (および他のすべての css ファイル) はスタイルシートの定義済みフォルダーに含まれています。明らかに、これは .js ファイルや画像などの他のアセットにも当てはまります。

何か案は?

4

1 に答える 1

1

htaccessルールは正しいです-問題はフォルダ構造にあります。

相対リンクを作成すると、アドレスバーに表示されている現在のURLからの相対リンクになります。現在のファイルの場所は関係ありません。

ビューファイルは/framework/views/booking/dashboard.phpにありますが、ブラウザにはURL/framework/booking/dashboardが表示されます。これは、ブラウザがリソースの場所を/framework/booking/dashboard/wuxia-blue.cssと解釈することを意味します

個人的には、すべてのcssと画像をフレームワークの外の/imagesと/cssに保持することをお勧めします。そうしないと、すべての画像リクエストがframework.phpファイルを介して実行されるため、画像ファイルを提供するためにフレームワークにコードを追加する必要がある場合があります。

于 2012-11-13T20:35:21.653 に答える