1

サブディレクトリを使用して url に仮想ホストをセットアップすることができません...次のようなアドレスでプロジェクトを実行する必要があります。

http://www.projects.loc/project1/ これは、アドレスが次のような Web サーバーへのインストールを模倣する必要があります。

http://www.someServer.com/projects/project1/

リダイレクトを「/」に調整する必要があるため、元に戻りますwww.projects.loc/project1/

私が持っているhosts.txtに:

127.0.0.1       www.projects.loc

仮想ホストが有効になり、httpd-vhosts.conf は次のようになります。

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot "D:/Projects/Project1/public/"         
    ServerName  www.projects.loc/project1/
</VirtualHost>

何が欠けていますか?

編集: .htaccess は次のようになります。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php [NC,L]

アプリケーションはクリーン ドメインで正常に実行されていますが、domain.com/some_dir/ で実行するように構成できません。

編集:
これを解決しました!

NameVirtualHost *:80   

   <Directory "D:/Projects"> 
      allow from all
   </Directory>

    <VirtualHost *:80>
        DocumentRoot "D:/Projects"      
        ServerName  www.projects.loc/

        Alies /project1  /Project1/public/
    </VirtualHost>

注: これは開発環境にのみ有効な最小構成
です。実稼働環境の詳細については、@Mz から承認されたアンサーを確認してください。

4

1 に答える 1

2

おそらく、あなたはすでにその質問を解決しています。とにかく、私は今日似たようなものを探していたので、ここに解決策を文書化します:

ServerName にスラッシュを書きたくない

サーバー名 www.projects.loc/project1/

「project1」という名前のプロジェクトが 1 つしかない場合は、「ServerPath」を使用して簡単にジョブを完了できます。vhost 構成は次のようになります。

<VirtualHost *:80>
  ServerName projects.loc
  ServerAlias www.projects.loc
  ServerPath /project1/
  DocumentRoot /PATH/public_html
  ErrorLog /PATH/error_log
  CustomLog /PATH/access_log combined
  DirectoryIndex index.html index.htm index.php index.php4 index.php5

  <Directory /PATH/public_html>
    Options -Indexes +IncludesNOEXEC +FollowSymLinks
    allow from all
  </Directory>

</VirtualHost>

ServerPath を介して、ディレクトリを projects.loc/project1 にマウントできます。

いずれにしても、projects.loc/project1、projects.loc/project2 などにバインドしたい複数のプロジェクト (project1、project2) があると仮定すると、"Alias" を使用します。仮想ホスト構成ファイルは次のようになります。

<VirtualHost *:80>
  ServerName projects.loc
  ServerAlias www.projects.loc
  DocumentRoot /PATH/public_html
  ErrorLog /PATH/error_log
  CustomLog /PATH/access_log combined
  DirectoryIndex index.html index.htm index.php index.php4 index.php5

  <Directory /PATH/public_html>
    Options -Indexes +IncludesNOEXEC +FollowSymLinks
    allow from all
  </Directory>

  Alias /project1 "/PATH/public_html/project1"
  <Directory "/PATH/public_html/project1">
    DirectoryIndex index.html index.htm index.php index.php4 index.php5
    Options -Indexes +IncludesNOEXEC +FollowSymLinks
    allow from all
  </Directory>

  Alias /project2 "/PATH/public_html/project2"
  <Directory "/PATH/public_html/project2">
    DirectoryIndex index.html index.htm index.php index.php4 index.php5
    Options -Indexes +IncludesNOEXEC +FollowSymLinks
    allow from all
  </Directory>

</VirtualHost>

フォルダー /PATH/public_html/project1 に配置されているアプリケーションは、projects.loc/project1 で使用できるようになり、フォルダー /PATH/public_html/project2 に配置されているアプリケーションは、projects.loc/project2 で使用できるようになります。

アプリケーションごとに異なるサブドメインを使用したいと考えています。これには、サブドメイン ホストごとに独自の構成ファイルがあるという利点があり、エラーやアクセス ログの処理も容易になります。エイリアスを使用すると、アプリケーションごとに異なるエラー ログとアクセス ログを設定することが難しくなります。

さらに読む:
Alias について: http://httpd.apache.org/docs/current/mod/mod_alias.html
ServerPath について: http://httpd.apache.org/docs/2.2/vhosts/examples.html#serverpath

于 2013-04-20T16:46:08.010 に答える