2012-03-06 11 views
0

我々はそうのようなファイル構造を持っている場合:(。すなわち<a href="aboutus/aboutus.html">)1はaboutus.htmlにリンクするときにフォルダを指定する必要がありますがApacheはどのようにして相対パスを探すのかを知っていますか?

/ 
├── aboutus 
│   ├── aboutus.html 
│   └── logo.jpg 
├── validate.php 
├── index.html 
└── logo.jpg 

、あなたがlogo.jpgを配置する場合index.htmlaboutus.htmlの両方に、Apacheは知っているだろう1つはロードする。おそらく、現在のディレクトリ内のファイルだけを探します。私は私の仮想ホストセクションに次のディレクティブを持っている:

RewriteCond %{REQUEST_URI} !^/validate.php 
RewriteRule ^/(.*) /validate.php?uri=$1 

私は、これらのreweriteルールに合計初心者ですので、これは私が以上がやりたいものです:私はそれはから任意の要求をインターセプトしたいですブラウザ。これには、アドレスバーに入力されたリクエストだけでなく、Webページ(つまり、jsファイル、イメージ...)からのリクエストも含まれます。次に、要求されたファイルをvalidate.phpに送信します。

validate.phpは、明らかにユーザーを検証しますが、ユーザーが要求したファイルを返すだけです。 aboutus.htmlに​​のような画像が挿入された場合、validate.php/aboutus/logo.jpgを返し、/logo.jpgを返さないようにするにはどうすればよいですか?

答えて

1

本質的に、絶対パスは、ベースリソースURL相対リソースURL(このhereの詳細)から決定されます。 validate.phpがイメージ、スタイルシートなどの相対URLを適切に解決できるようにするには、これらのリソースを含むドキュメントの絶対URLを何らかの形で知らせる必要があります(ドキュメントに<base>というタグがある場合はさらに厄介です)。

0

とにかくhtaccessファイルでは、常に絶対パスで作業します。私はルートスラッシュで始まることを意味します。

試しに使用する:

RewriteCond %{REQUEST_URI} !^/validate.php 
RewriteRule ^(.*) /validate.php?uri=$1 
1

プーク、あなたは別々の2つの側面を維持する必要があります:

  • 任意のHTTPリクエスト、などGETは絶対的であり、ブラウザを参照ドキュメントのパス(または<base>タグで定義されているパス)のいずれかに基づいて、相対hrefまたはsrc属性を変換します。したがって、http://somehost/fred/xx.htmlをロードし、次にrイメージを参照してstyle1/images/pic.pngブラウザが要求しますhttp://somehost/fred/style1/images/pic.png

  • mod_rewriteプロセスの経路がどのように異なっているかを示します。これがサーバーのビジネスです。サーバごとの設定(apache.conf又はvhost.conf)内部評価方法相対および絶対パス説明RewriteRule Documentation参照およびディレクトリ単位のコンフィギュレーション内部(例えば.htaccess又はブロックで)

関連する問題