XAMPP / Apacheにhtdocs以外のファイルを提供させる[終了]


304

ディレクトリ外のファイルを提供するようにxamppを構成することは可能htdocsですか?

たとえば、次の場所にあるファイルがあるとします。

C:\projects\transitCalculator\trunk\TransitCalculator.php

そして私のxamppファイルは通常以下から提供されます:

C:\xampp\htdocs\

(それがデフォルトの設定であるため)ApacheにTransitCalculator.phpファイルを認識させ、ファイルを移動せずに提供する方法はありますhtdocsか?できれば、Apacheがプロジェクトディレクトリのコンテンツ全体にアクセスできるようにしたいのですが、プロジェクトディレクトリをの下に移動したくありませんhtdocs

編集:質問タイトルにApacheを追加して、Q / Aをより「検索可能」にするために編集されました


1
タグは十分に検索できるはずだと思います。
icedwater 2014年

24
この質問はクローズされるべきではありませんでした。これはXAMPPの質問です。これは開発者の質問です。
Andrew Koper

15
Andrew Koperも同意しますが、現時点でスタック交換エコスフィア全体に蔓延している強烈な不親切さのレベルに驚くことはありません。_(ツ)_ /¯
cmcculloh

Mabyはトピックから外れていますが、ヒントにしたいだけです。ディレクトリを「htdocs」フォルダに移動するオプションもあります。あなたは、ローカルホストでGoogleドライブで開いているファイルのことができるようにしたい場合。)(stackoverflow.com/questions/41751330/...
Gordova

2
すべての回答とは別に、1つ追加したいと思います。PHP 5.4.0以降では、コマンドラインを使用してプロジェクトルートに移動し、を実行できphp -S <host>:<port>ます。例えばphp -S localhost:80
radiantshaw 2017

回答:


362

OK、pix0rSparksDaveの回答ごとに、これを行うには3つの方法があるようです:


仮想ホスト

  1. C:\ xampp \ apache \ conf \ extra \ httpd-vhosts.confを開きます。
  2. コメント解除〜19行目(NameVirtualHost *:80)。
  3. 仮想ホストを追加します(〜36行目):

    <VirtualHost *:80>
        DocumentRoot C:\Projects\transitCalculator\trunk
        ServerName transitcalculator.localhost
        <Directory C:\Projects\transitCalculator\trunk>
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
  4. ホストファイル(C:\ Windows \ System32 \ drivers \ etc \ hosts)を開きます。

  5. 追加

    127.0.0.1 transitcalculator.localhost #transitCalculator

    ファイルの最後(Spybot-Search&Destroyの前)(インストールされている場合)。

  6. 保存(デスクトップに保存し、古いホストファイルの権限を変更(右クリック>プロパティ)し、新しいファイルを古いファイルの上にコピーする(または古いファイルの名前を変更する)必要がある場合があります。 Vistaとトラブルがあります)。
  7. Apacheを再起動します。

これで、http://transitcalculator.localhost/にアクセスしてそのディレクトリにアクセスできます。


エイリアスを作成する

  1. http.confファイルの〜200行目を開始して、〜の間のすべてをコピー<Directory "C:/xampp/htdocs"></Directory>(〜232行目)、そのすぐ下に貼り付けC:/xampp/htdocs、目的のディレクトリ(この場合はC:/Projects)に置き換えて、サーバーに新しいディレクトリに対する正しい権限を付与します。

  2. <IfModule alias_module></IfModule>セクション(〜300行目)を見つけて追加します

    Alias /transitCalculator "C:/Projects/transitCalculator/trunk"

    (またはあなたの欲望に関連するものは何でも)Aliasモジュールタグ内のコメントブロックの下。


ドキュメントルートを変更する

  1. C:\ xampp \ apache \ conf \ httpd.confの〜176行目を編集します。(またはあなたが望むもの)に変更DocumentRoot "C:/xampp/htdocs"#DocumentRoot "C:/Projects"てください。

  2. 203行目を編集して、新しい場所(この場合はC:/Projects)に合わせます。


ノート:

  • バックスラッシュ「\」の代わりにスラッシュ「/」を使用する必要があります。
  • 末尾に「/」を含めないでください。
  • サーバーを再起動します

13
手順(3)でC:\ Windows \ System32 \ drivers \ etc \ hostsを編集します。最初に管理者としてエディター(メモ帳、メモ帳++、またはその他のエディター)を実行することをお勧めします。したがって、C:\ Windows \ System32 \ drivers \ etc \フォルダーに直接保存できます。
CallMeLaNN 2010

3
403エラーが発生した場合は、このリンクを
Wojtek Owczarczyk

21
Win7でOrder allow、deny Allow from allを使用すると、このオプションは廃止されているため、403エラーが返されます。必要なすべての許可を使用します。stackoverflow.com/questions/9110179/...
hywak

4
ちなみに、このステップは私が行う必要があるようには見えませんでした:コメント行19(NameVirtualHost *:80)のコメントを外します
Silverback

2
を使用Order allow,deny Allow from allしてもうまくいきませんでしたが、Require all grantedうまくいきました。
ダニーベケット

96

XAMPP \ apache \ conf \ httpd.conf のDocumentRoot設定を編集することで再配置できます。

それは現在あるはずです:

C:/ xampp / htdocs

それを次のように変更します。

C:/ projects / transitCalculator / trunk


40
DocumentRootを要求する両方の行で編集することを忘れないでください。あなたはトップのみの1を変更した場合は、などの読み取りアクセスエラーを取得します
Arcolye

2
これはXAMP Macにも適用されますか?
怒ったキウイ

では、どのURLからインデックスページにアクセスできますか?
Manish Kumar

49

VirtualHostもこれで機能し、サブディレクトリを必要とせずに複数のプロジェクトをホストできるため、より適切に機能する可能性があります。方法は次のとおりです。

httpd.conf(またはhttpd.confに関連するextra \ httpd-vhosts.conf。末尾のスラッシュ「\」が機能しない場合があります):

NameVirtualHost *:80
# ...
<VirtualHost *:80>  
    DocumentRoot C:\projects\transitCalculator\trunk\
    ServerName transitcalculator.localhost
    <Directory C:\projects\transitCalculator\trunk\>  
        Order allow,deny  
        Allow from all  
    </Directory>
</VirtualHost> 

HOSTSファイル(通常はc:\ windows \ system32 \ drivers \ etc \ hosts):

# localhost entries
127.0.0.1 localhost transitcalculator.localhost

ここでXAMPPを再起動すると、http://transitcalculator.localhost/にアクセスできるようになり、直接そのディレクトリにマップされます。

これは、ドメイン名のルートにあるサイトを開発している本番環境を複製しようとしている場合に役立ちます。たとえば、サーバーに引き継がれる絶対パスを持つファイルを指すことができます。

<img src="/images/logo.png" alt="My Logo" />

一方、エイリアスまたはサブディレクトリを使用する環境では、「images」ディレクトリが現在のファイルに対して相対的であった場所を正確に追跡する必要があります。


PCに複数のネットワークドライブがあり、ドライブ文字(などX:\myfolder)にマップされています。この方法を使用すると、「アクセスが禁止されています」という警告が表示されます。これは、Apacheユーザーにドライブへの読み取りアクセス権がないことを意味しますか?
ハリーグ2013年

1
以下の下でDirectory交換するOrder allow,denyAllow from allしてRequire all grantedstackoverflow.com/questions/9110179/…を
Michiel

16

制限なしでどこからでもページを提供するようにApacheを設定できますが、通常はより安全な形式で配布されます。

Apacheファイル(http.confは最も一般的な名前の1つです)を編集すると、任意のフォルダーを設定して、Webルートに表示できます。

編集:

エイリアスmyapp c:\ myapp \

私は自分の回答を編集して、http.confファイルにエイリアスを作成するための形式を含めました。これは、Windowsのショートカットや、ApacheがフォルダーをWebルートに「偽装」しているun * xのシンボリックリンクのようなものです。これはおそらく、長期的にはあなたにとってより役立つでしょう。


10

XAMPPでネットワークドライブをドキュメントルートとして使用する場合は、httpd.confでUNCパスを使用する必要があります。XAMPPはマップされたネットワークドライブを認識しません。

たとえば、次は機能しません、DocumentRoot "X:/ webroot"

しかし、これはDocumentRoot "//192.168.10.100/webroot"になります(バックスラッシュではなく、スラッシュに注意してください)。


それは私のマップされたネットワークドライブで正常に動作します。
Sean Kendle、2014

7

Apache 2がhtdocs外のWebサイトをホストできるようにするソリューション:

httpd.confの "DocumentRoot"ディレクティブの下に、ディレクトリブロックが表示されます。このディレクトリブロックを次で置き換えます。

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Allow from all
</Directory> 

この構成を実際の環境で使用しないでください


symlincsをサポートするファイルシステムでのみ機能します。このオプションを使用すべきではない理由の説明はありません。
ダヌビアンセーラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.