2

同じ(カスタム)フレームワークを使用して、1つのサーバー/IPから8つのWebサイトをホストする必要があるプロジェクトを開始しています。

私がする必要があるのは、サイトごとに別々のアプリフォルダーを使用することです。この部分は簡単で、フォルダ構造を複製するだけです。私が問題を抱えているのは.htaccessです。

各アプリケーションフォルダは次のように設定されます。

- application
  -controller
  -view
  -www
    -css
    -js
    -img

ここで、ファイルのリクエストを設定して取得する必要があります。ファイルではないリクエストは、個々のアプリケーションのブートストラップファイルに送られます...この部分も簡単です。.htaccessリクエストがそこに到達したらそれを処理するためにwebrootにファイルします。

私が必要としているのは、メインのルートフォルダーで.htaccess、ユーザーがアクセスしたドメインに基づいて、どのアプリケーションに移動するかを決定するために使用することです。

移動するアプリケーションフォルダが1つしかない場合、htaccessリダイレクトセクションは次のようになります。

RewriteEngine on

RewriteCond     %{DOCUMENT_ROOT}/application/www%{REQUEST_URI} -d
RewriteRule     ^(.*[^/])$ /$1/                 [R=301,L]

RewriteRule ^$  application/www/        [L]
RewriteRule (.*)    application/www/$1      [L]

基本的に、同じフレームワークを使用して複数のドメインにこれ​​を複製する必要があります。

アプリケーションフォルダには、ドメイン名と同じ名前が付けられています。

4

1 に答える 1

1

これを試して:

RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/%{HTTP_HOST}/www%{REQUEST_URI} -d
RewriteRule ^(.*[^/])$ /$/ [R=301,L]

RewriteRule ^$ application/www/ [L]

RewriteCond %{DOCUMENT_ROOT}/%{HTTP_HOST}/www%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}/%{HTTP_HOST}/www%{REQUEST_URI} -f
RewriteRule ^(.*)$ application/www/$1 [L]

最後のルールの上の2つの条件は、要求されたリソースが実際にアプリケーションのwwwフォルダーに存在することを保証します。そうでない場合、404メッセージはフォルダー構造を公開します。

次のようないくつかのルール(上記)を使用して、ホスト名を正規化する必要がある場合があります。

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

ホスト名を強制的にwwwまたは

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

ホスト名からwwwを削除します。

于 2012-08-22T22:17:05.553 に答える