2011-01-04 9 views
1

私のウェブホストは私の "メイン"ドメイン名をルートのwwwフォルダにポイントします。そのサイトのWebファイルは、 "www/app/webroot"フォルダにあります。私は、同じサイトのためのdevのサイトを開始しようとしている2つのサイトのhtaccessファイルを変更します

RewriteBase/
RewriteEngine on 
RewriteRule ^$ app/webroot/ [L] 
RewriteRule (.*) app/webroot/$1 [L] 

:私は現在のhtaccessファイルに次のように使用して、サイトの稼働を持っています。私は "dev"という名前のフォルダをwwwフォルダに作成しました。したがって、このフォルダのWebファイルは "www/dev/app/webroot"にあります。私はdevフォルダを指すサブドメインを持っています。私がdevフォルダにある上記と同じhtaccessを使用すると、ルートwwwフォルダから設定を継承しているため、動作しません。ページが読み込まれると、空白になります。両方のサイトで使用できるようにhtaccessファイルを設定するにはどうすればよいですか?

ありがとうございました!私は明らかにこのものの初心者です。

答えて

5

だから我々は、.htaccessファイルを使用して

避け:-)物事をきれいにしようとするでしょう。ディレクトリ/ foo/barの.htaccess内のすべての設定は、Apache設定でディレクトリ設定として設定することができます(.haccessは、Apacheを所有していない場合はApacheのconfへのアクセスを制限すると便利です)。

<Directory /foo/bar>(...)</Directory> 

名前付きの仮想ホストでサイトにアクセスできます。このオプションが設定されていることを確認してください。

NameVirtualHost *:80 

これがあれば、いいことが始まります。 これはあなたの第一アプリのバーチャルホストを次のようになります。

<VirtualHost *:80> 
    ServerName app 
    ServerAlias www.app.somwhere.com 
    ServerAlias app.somwhere.com 
    DocumentRoot /www/app/webroot 
    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
    </Directory> 
    <Directory /www/app/webroot> 
     Options Indexes FollowSymLinks 
     # this prevent.htaccess reading, remove if you want .htaccess 
      AllowOverride None 
      # allow web access 
     Order allow,deny 
     allow from all 
    </Directory> 
</VirtualHost> 

ほとんどのApacheの設定は、ここで定義することができます。あなたの1stアプリのみ。 Apacheは、サイト名 'app'、または 'www.app.somwhere.com'、または 'app.somwhere.com'に対して行われたすべての要求に対してこの構成を提供します。エイリアス(ServerAlias)と1つの名前(サーバー名)のみを定義できます。

ブラウザに入り、http://app/と入力した場合、ブラウザはサーバーを見つけられませんので、/ etc/hostsに設定してください。これは、実際のDNSを取得するまで、あなたのアプリケーションにアクセスしたいすべての人々がホストファイルにあるべきものです(第1のアプリはapp.somwhere.comで、第2のfoo.somwhere.comと92.128.52.226は外部IPです) :

127.0.0.1 app.somwhere.com app foo foo.somewhere.com 
92.128.52.226 app.somwhere.com app foo foo.somewhere.com 

そして今、あなたの第二のアプリのためのは、他のバーチャルホストを追加してみましょう。

<VirtualHost *:80> 
    ServerName foo 
    ServerAlias www.foo.somwhere.com 
    ServerAlias foo.somwhere.com 
    DocumentRoot /www/foo/webroot 
    <Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
    </Directory> 
    <Directory /www/foo/webroot> 
     Options Indexes FollowSymLinks 
     # this prevent.htaccess reading, remove if you want .htaccess 
      AllowOverride None 
      # allow web access 
     Order allow,deny 
     allow from all 
    </Directory> 
</VirtualHost> 

等 があなたのApacheを再起動することを忘れないでください。書き換えルールはありません。素敵な設定の第一歩は素敵なvirtualhostsです。あなたは、名前、ディレクトリ、または場所ごとの名前を定義することができます。 php.iniのグローバル共有の代わりに、php_valueを使用して、仮想ホストごとにphp設定を設定することもできます。あなたの仮想ホストのリストを取得する

タイプ

apache2 -S 

は、Apacheが要求されたサイトの名前を理解しdoes'nt場合、それは機能します、最初のものは「デフォルト」の一つであることがわかりますこのデフォルトのものです(したがって、これらのケースを処理するために特定の仮想ホストを上に広告することができます)。

+0

すごい!ありがとう。ちょうど私が必要なもの。 – Randy

0

3行目と4行目のdev .htaccessのパスにdev /を追加してみてください。

+0

私はそれを試みました、それは仕事をしませんでした。私がルートフォルダに追加すると、メインサイトが壊れてしまいます。 devフォルダに追加するとエラーが出ますが、それは存在しないwww/dev/dev/app/webrootを探しているためです。 – Randy

0

あなたのdevフォルダにある.htaccessの "RewriteBase /"行を削除する必要がありますか?

+0

ありがとう!これを試して、doesnt仕事。 – Randy

関連する問題