私はこれをやろうと思っています
<VirtualHost *>
ServerName myDomain.com
DocumentRoot /var/www/myDomain
<Directory /var/www/myDomain>
Rewrite on
RewriteRule ^blog/(.*)$ /var/www/myBlog/$1 [L]
</Directory>
</VirtualHost>
それで http://www.myDomain.com/blog/別のディレクトリからファイルを読み取ります。上記は機能しないので、ファイルを移動せずにこれを行うにはどうすればよいですか?
答え1
このために mod_rewrite を使用する必要はありません。 エイリアスより適しています。
# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
Alias /blog /var/www/myBlog
ブログの設定を変更したい場合は、場所指令。
<Location /blog>
Allowoverride All
</Location>
答え2
次のようにします:
<VirtualHost *>
ServerName myDomain.com
DocumentRoot /var/www/myDomain
Alias /blog/ /var/www/myBlog/
</VirtualHost>
答え3
Location
タグはApacheディレクティブの汎用コンテナに過ぎないので、ウェブサイトの「外部ビュー」セクションに適用したいものを「ラップ」するために使用します。複数の物理ディレクトリからコンテンツを1つの大きな構造に取り込む場合に非常に便利です。複数のDirectory
エントリを持つ代わりに、同じルールセットをそれらすべてに適用できます。
Alias
ディレクティブは単純なリダイレクトであり、長いパスを短く簡潔なポインターとして表示するのに最適です。
DocumentRoot
ディレクティブは、最上位の Web コンテンツ ディレクトリを設定します。
これらはすべてディレクトリを扱いますが、それぞれ少しずつ異なります。場所は主に、いわゆる「Web ビュー」、つまり外部からどのように見えるかを扱うためのものです。ディレクトリは、ファイルシステム上の実際のディレクトリを扱う「物理ビュー」のためのものです。1 つのディレクトリの内容が 1 つの URL として提供される場合、それらの間に機能的な違いはありません。
ただし、複数のディレクトリを「作成」し、必ずしもファイルシステム階層を反映しない複数の URL からそれらを提供する場合は、目的の効果を得るためにこれらすべてのディレクティブを組み合わせて一致させる必要があります。 2 つのディレクティブが 1 つの状況で同じように動作するからといって、別の状況でも同じように動作するとは限りません。