2012-02-23 30 views
7

htaccessを使用して、サブディレクトリがサイト全体のルートとして機能するように指示する方法はありますか?私はhttp://localhost/testsite/下とでは、ウェブサイトを持っていた場合.htaccessを使用してサブディレクトリをルートディレクトリとして設定する

例えば

、それはindex.phpファイルは

<link rel="stylesheet" type="text/css" href="/css/layout.css" /> 

が、私はそれから作るでした..私は、次のコードを使用して、スタイルシートへの参照を持っていたのですそのロード/ localhostの/ testsite/css/layout.css?

この問題を回避するために、各サイトに対してローカルホストサブドメインを設定しますが、これは動作しますが理想的ではありません。

多くのありがとうございます。

+6

仮想ホストを設定します。 –

+0

Cillosisが指摘するように、これは通常、サイトのApache設定で行われます。 [DocumentRoot](http://httpd.apache.org/docs/2.0/mod/core.html#documentroot)を目的のフォルダに設定するだけです。 –

答えて

2

確かに、(あなたと)すべての相対URI、デフォルトでは、ドキュメントのURIであるベースURIに対して相対的です:あなたが唯一追加するどの部分に指示する必要があり

http://localhost/testsite/index.php 

<link rel="stylesheet" type="text/css" href="./css/layout.css" /> 
              ^
              ` see this dot 

例:あなたはこのよりモジュールを持っている必要がある場合は

Base URI  :: http://localhost/testsite/index.php 
Relative URI :: ./css/layout.css 
Result  :: http://localhost/testsite/css/layout.css 

、THAを行うための複数の方法がありますt。 1つは、HTML文書内に明示的にベースURIを設定することです(<base>参照)。

もう1つは、要求URI とサイトのルートパスに基づいて、サーバー側で相対的にリンクを解決することです。例については、this answerを参照してください。

20

'href = "/ css/layout.css"'の部分を保持したい場合は、yesを指定して書き換えルールを設定できます。/testsiteで始まるものをリダイレクトしないように気を付けなければなりません(あるいは、ループで終わるでしょう)。

と同様に(ルートの.htaccessで):

http://localhost/testsite/css/layout.css

または

http://localhost/css/layout.css:あり

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/testsite/.*$ 
RewriteRule ^(.*)$ /testsite/$1 [QSA,L] 

は、あなたがいずれかからあなたのlayout.cssファイルにアクセスすることができます

関連する問題