3

ローカルの Mac OS X コンピュータで動作するように Apache と PHP を構成しました。ライブ サイトのファイルを読み込もうとするときを除いて、PHP は正常に動作するようになりました。ライブ サイトには個別のディレクトリがあり、クライアント名などでソートされています。

ローカル Web サーバー ドキュメントのデフォルト ルートにシンボリック リンクを作成しました。私の問題は、Apache が HTML ページにある相対パスをロードしたくないように見えることです。たとえば、src="/css/main.css" がありますが、Apache はファイルをロードしません。画像の場合と同様に、ファイルが見つからない 404 エラーとして解決されます。次に、シンボリックリンクである可能性があると考えたので、ディレクトリ全体をApacheドキュメントルートにコピーしましたが、それでも同じ結果が得られました.

Apache、PHP、MySQL を実行してローカルで開発し、準備ができたら公開するようにローカル開発環境をセットアップしたいと思っています。MAMPのインストールも試しましたが、同じ問題がありました。

4

2 に答える 2

2

まず、src="./css/main.css" を使用してみてください。

複数のライブ サイトを扱う場合、Apache を使用してサイトごとに 1 つの構成ファイルをセットアップし、それらをまとめて httpd.conf ファイルにロードします。

私のセットアップでは、次のようになります。

/etc/apache2/httpd.conf で

私は持っている:

# Begin virtual host directives.

Include conf/bortreb.conf

Include conf/rlmcintyre.conf

Include conf/laserkard.conf

Include conf/judyates.conf

そして /etc/apache2/conf/judyates.conf に

私は持っている:

    <VirtualHost *:80>
    #localhost site

    ServerAdmin email@example.com
    DocumentRoot "/home/r/Desktop/web/judyates"
    ServerName localhost
    ServerAlias judyates.localhost
    ErrorLog "/home/r/Desktop/web/judyates/log/error_log.log"
    ScriptAlias /cgi-bin/ "/home/r/Desktop/web/judyates/cgi-bin/"

    <Directory "/home/r/Desktop/web/judyates">
        Options Indexes FollowSymLinks
        Options +ExecCGI
        AddHandler cgi-script cgi pl py
        AllowOverride Options
        Order allow,deny
        Allow from all
    </Directory>

    </VirtualHost>


  <VirtualHost *:80>

    #live site
    ServerAdmin email@example.com
    DocumentRoot "/home/r/Desktop/web/judyates"
    ServerName judyates.com
    ServerAlias *.judyates.com
    ErrorLog "/home/r/Desktop/web/judyates/log/error_log.log"
    ScriptAlias /cgi-bin/ "/home/r/Desktop/web/judyates/cgi-bin/"


    <Directory "/home/r/Desktop/web/judyates">
        Options Indexes FollowSymLinks
        Options +ExecCGI
        AddHandler cgi-script cgi pl py
        AllowOverride Options
        Order allow,deny
        Allow from all

    </Directory>

    </VirtualHost>

サブドメイン yoursite.localhost をホーム IP アドレスにループバックするように設定できるため、この方法は非常にうまく機能します。

このセットアップでは、自分のコンピューターで judyates.com を操作していて何かをテストしたい場合、Web ブラウザーで judyates.localhost にアクセスするだけです。

他に約 5 つのサイトがすべて独自の *.conf ファイルでこのように設定されているため、サーバー上のディレクトリと正確に一致するコンピューター上の独自のディレクトリにそれぞれが存在できます。

重要なのは、仮想ホストを使用して、サブドメインに基づいて異なるサイトに移動することです。

自分を指すサブドメインを構成する方法については、http: //digitalpbk.blogspot.com/2007/01/making-subdomains-on-localhost.htmlを参照してください。

サーバーもセットアップするので、私のセットアップはさらに一歩進んでいます。更新するときはいつでも、Web ファイルと apache 構成ファイルの両方をロードします。そうすることで、サーバーはローカル セットアップを正確にミラーリングします。唯一の違いは、本物の judyates.com が私の自宅のコンピューターではなくサーバーを指していることです。そのため、人々がサイトにアクセスしようとすると、サーバーからすべてを取得します。

于 2010-04-08T23:09:22.557 に答える
1

src="css/main.css" を試しましたか? つまり、先頭のスラッシュなしで?先頭にスラッシュがある場合、ファイルは Web サーバーのルート ディレクトリにある css という名前のディレクトリにある必要がありますが、正しく理解している場合はそうではありません。

編集:OK、あなたのコメントを読むと、相対 URL がどのように機能するかがよくわからないようです。「/css/main.css」は、ディレクトリ ツリー内のページの場所に対して相対的ではありません。Webサーバーのルートディレクトリにある「css」というディレクトリにある「main.css」というファイルのことです。ファイルを展開サーバーに配置すると、css ディレクトリWeb サーバーのルート ディレクトリになります。しかし、現在、css ディレクトリをクライアントの名前のサブディレクトリに配置しているようです...そのため、css ファイルは現在 "/clientname/css/main.css" にあります。

私があなたを正しく理解していれば、相対 URL を使用してやりたいことを実行できます。HTML ファイルが css ディレクトリと同じディレクトリにある場合は、「css/main.css」が必要です。css ディレクトリを含むディレクトリのサブディレクトリにある場合は、「../css/main.css」が必要です。「..」は、現在のディレクトリの親ディレクトリを意味します。相対 URL を使用する場合、ファイル間の関係が変わらない限り、引き続き機能します。

この件について適切に説明しているページは次のとおりです。 http://www.webreference.com/html/tutorial2/3.html . 私が Google で最初に見つけたのはほぼこれだったので、もっと良い説明が他にあるかもしれません。

これを行うために使用できる多くの Apache ディレクティブがありますが、相対 URL を使用することがうまくいく場合 (そして、私が正しく理解している場合)、それははるかに単純であり、さらなる問題を引き起こす可能性は低くなります。 .

于 2010-04-08T22:45:07.920 に答える