3

ローカルラップトップ(ubuntu 12.04)で開発環境を構成していますが、目的を達成するためにいくつかの問題があり、apache構成の初心者です。

メインプロジェクトディレクトリを作成しました。フォルダ階層に従って、すべてのプロジェクトに単一の動的仮想ホストを設定したいと思います。

これが私が使用するフォルダ階層です:

  • メインプロジェクトディレクトリ(すべてのプロジェクトを含む):
    • Customer1
      • Project1
        • public(プロジェクトルートディレクトリ)
      • Project2
        • 公衆
      • その他のプロジェクト...
    • Customer2
      • Project1
        • 公衆
    • より多くの顧客...

プロジェクトにアクセスするには、次のURLを使用します:customer1.project1.dev、customer1.project2.dev、customer2.project1.dev...ルートディレクトリパラメーターでurlの一部を使用することについて説明している仮想ホスト構成についてのいくつかの情報を読みました。これ:/ home / user / mainprojectdirectory /%1 /%2 / publicだから私はこれに基づいて試し始めました:

<VirtualHost *.dev>
DocumentRoot    /home/user/mainprojectdirectory/%1/%2/public
ServerName  %1.%2.dev
</VirtualHost>

しかし、私はそれを機能させることはできません。私は正しい道を進んでいますか?私が望むことを達成するために私はどのようなステップに従うべきですか?どのファイルを編集する必要がありますか?すべてのアドバイスは大歓迎です!(私はapache構成の初心者であることを忘れないでください)

ありがとうございました。

4

1 に答える 1

5

やったよ!

まず、mod_vhost_aliasとmod_rewriteの2つのmodを有効にする必要があります

sudo a2enmod vhost_alias
sudo a2enmod rewrite

1] / etc / apache2 / sites-availableに新しい仮想ホストを作成し、zzz-devという名前を付けました

<VirtualHost *:80>

#All requests ending with .dev will use this virtualhost
ServerName dev
ServerAlias *.dev

# Get server name of header Host:
UseCanonicalName Off

# Interpret the request url to find the right project folder. Ex: For customer1.project1.dev, %1 is the first part (here: customer1), %2 the second part (here: project1), so the folder for this url is /home/victor/takative/projets/customer1/project1/public
VirtualDocumentRoot /home/user/mainprojectdirectory/%1/%2/public

# Fix for missing $SERVER['DOCUMENT_ROOT'] while using VirtualDocumentRoot, the setDocumentRoot.php file will be added autmatically to set the variable
php_admin_value auto_prepend_file /home/lib/utils/setDocumentRoot.php

RewriteEngine On
RewriteOptions Inherit 

<DirectoryMatch "/home/user/mainprojectdirectory/.*">
    IndexOptions +FancyIndexing NameWidth=*
    Options Includes FollowSymLinks Indexes
    AllowOverride All
    Order allow,deny
    Allow from all
</DirectoryMatch>

</VirtualHost>

setDocumentroot.phpの内容は次のとおりです。

<?php
$_SERVER['DOCUMENT_ROOT'] = str_replace($_SERVER['SCRIPT_NAME'], '',$_SERVER['SCRIPT_FILENAME']);
?>

2]新しい仮想ホストを有効にします。

sudo a2ensite zzz-dev

3] apacheをリロードします:

sudo service apache2 reload

4]ここで、プロジェクトを作成するには、上からフォルダー階層をたどり、次の行で/ etc/hostsファイルを編集する必要があります。

127.0.0.1 customer1.project1.dev

それが役に立てば幸い。誰かがこの設定を改善するための提案を持っているなら、私は開いています。ありがとう

于 2012-08-20T15:24:36.433 に答える