web-dev-qa-db-ja.com

Apacheはドキュメントルート内外の別のフォルダーにリダイレクトします

最近、ホームWeb /メディアサーバーをセットアップしましたが、いくつかの設定でいくつかの問題がありました。 Webページなどを提供するのにうまく機能していますが、メインのドキュメントルートの構造を再編成し、取得するのが難しくなっています。

現在の構造は次のとおりです。

-drive
--sites
---live
----siteA
----siteB
----siteC
---dev
--media
---films
---series

私がやろうとしているのは、siteA/siteCが呼び出されたときにsiteCを提供することです。

たとえば、mydomain.comはsiteAにあるファイルを表示しますが、これで問題ありません。 SiteBとSiteCには独自のドメインなどはありません。それらをSiteAのサブフォルダーにしたくないので、mydomain.com/siteBがsiteBにあり、siteCと同じコンテンツを提供することを望みます。

次に、メディアサーバーに同じ前提を使用して、myDomain.com/mediaがメディアディレクトリ内のファイルのディレクトリ一覧を表示するようにします。

apache内のドキュメントルートはd:/ sites/liveであり、仮想ホストを使用して何が起こるかを判断しています。これは標準のmydomanA.comまたはmyDomainB.comでは問題ありませんが、上記のことを達成しようとする場合はそうではありません。

これは試行の1つです。

<VirtualHost *:80>
    DocumentRoot "D:/Sites/Live/siteA"
    ServerName www.mydomain.com/siteA
    <Directory "D:/Sites/Live/siteA">
        Order allow,deny
        Allow from all
        AllowOverride All
  </Directory>

代わりにエイリアスを使用した別の失敗した試み:

<VirtualHost *:80>
    DocumentRoot "D:/Sites/Live/siteA"
    ServerName www.mydomain/siteA
    <Directory "D:/Sites/Live/siteA">
        Order allow,deny
        Allow from all
        AllowOverride All
  </Directory>

  Alias /siteA D:/sites/live/siteA
  <directory "D:/sites/live/siteA">
    Order allow,deny
    AllowOverride All
    </directory>
</VirtualHost>

助けてくれてありがとう、私は解決策を見つけようとして過去数時間髪を引っ張ってきました。

コメントに答えるために編集されました。

予想される入力と出力は次のとおりです。

mydomain.com = d:/sites/live/siteA
mydomain.com/siteB = d:/sites/live/siteB
mydomain.com/siteC = d:/sites/live/siteC

メディアサーバーは次のようになります。

mydomain.com/media = d:/media
1
null

ユーザー serverfaultのutrecht この回答の投稿:


以下は、Scientific Linuxでテスト済みです。

<VirtualHost *:80>
  DocumentRoot "/var/www/html/siteA"

  Alias /siteB/ "/var/www/html/siteB/"
  <Directory "/var/www/html/siteB/">
       Order allow,deny
       Allow from all
       AllowOverride All
  </Directory>

  Alias /siteC/ "/var/www/html/siteC/"
  <Directory "/var/www/html/siteC/">
       Order allow,deny
       Allow from all
       AllowOverride All
  </Directory>

  Alias /media/ "/media/"
  <Directory "/media/">
       Options  +Indexes
       Order allow,deny
       Allow from all
       AllowOverride All
   </Directory>
</VirtualHost>

テスト結果は次のとおりです。

InputOutput
mydomain.comcontent of siteA
mydomain.com/siteA/404
mydomain.com/siteB/content of siteB
mydomain.com/siteC/content of siteC
mydomain.com/media/content of media

注:/mediaディレクトリにアクセスすると、error.logによってDirectory index forbidden by Options directive:がログに記録されます。 Options +Indexesを追加すると、問題が解決しました。この解決策が見つかりました こちら

0
null