2

Virtualmin APIを使用してphpで一連の第3レベルドメインを作成しています(ここまでは大丈夫です)。これらのサブドメインのそれぞれに対応するサブディレクトリを提供するソリューションが必要です。つまり、
sub1.domain.com は C:\xampp\htdocs\domain_com\subsites\sub1 に入ります。
sub2.domain.com => C:\xampp\htdocs\domain_com\subsites\sub2.
これも Virtualmin API を使用して行う必要がありますが、ユーザーはリダイレクト先のサブディレクトリを確認できてしまい、問題が発生します。サブドメインは、httpd.conf の一般的な解決策を使用してサブディレクトリに変換し、Apache を継続的に変更および再起動しないようにする必要があります。その間、ユーザーに表示される URL は「sub1.domain.com/whatever_dir/user_file.php」のままにする必要があります。次のような RewriteRule で取得しようとしました。

<VirtualHost *:80>
    ServerName www.domain.com
    ServeAlias *.domain.com
    DocumentRoot C:/xampp/htdoc/domain_com/
    Option +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www.domain.com
    RewriteCond %{HTTP_HOST} ^(w*).domain.com
    RewriteRule ^$ subsites/%1%{REQUEST_URI}
</VirtualHost>

このルールにより、'%1' ディレクトリ内のすべてのファイルを呼び出すことができました。ただし、これらのファイルのいずれかが画像またはその他のリソースを呼び出す場合、このリソースのパスは、呼び出し元のファイルではなく、常にドキュメント ルートを参照します。したがって、ファイルは正しく呼び出されますが、リソースパスが間違っています!!!

Alias、AliasMatch でも同様です。Alias と RewriteRules は、この目標を達成するための適切な手段ではないことに気付き始めましたが、他の手段については知りません。

ご清聴ありがとうございました。誰かが提案をしてくれることを願っています。エマヌエーレ。

4

2 に答える 2

1

ケビン、

これを行うには、 http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.htmlを参照してください。ディレクトリ構造が同じままである限り、今後構成を変更する必要はありません。

于 2012-10-22T21:06:17.793 に答える
0

J はさりげなく自分で問題を解決しました。RewriteRule には、リクエストを別の場所にリダイレクトする効果があります。これを行うたびに、新しいアプライアンスのために Apache がリコールされ、内部サーバー エラーが発生しました。– すみません、このブログの使い方がわかりません。これが修正です。

<VirtualHost :80>
  ServerName www.domain.it
  ServerAlias *.domain.it
  DocumentRoot "C:/xampp/htdocs/domain_com"
  <Directory "C:/xampp/htdocs/domain_com">
   Options FollowSymlinks
   RewriteEngine On
   RewriteCond %{HTTP_HOST} !^www.
   RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^([0-9A-Za-z_-]+).domain.com(.*/?)([0-9A-Za-z-_.?&=%])$
   RewriteRule !^siti siti/%1/%2%3
  </Directory>

このようにして、最初にルールはプレフィックス「siti/」をリクエストに追加し、その他に必要なものを追加します。Apache が再びパスをオンにすると、新しいパスが not "!" と一致し、"^" が "siti" で始まり、停止します。実際、それは完全に機能します。

于 2012-11-06T11:10:30.940 に答える