1

通常のパブリックルートフォルダの外にあるフォルダを指すサブドメインが必要です。

httpdocs/
sub_dom/

つまり、「admin.domain.com」は「sub_dom」を指し、「domain.com」は通常のhttpdocsフォルダーを指します。

  1. これは可能ですか
  2. より良い解決策はありますか(たとえば、別の方法で行う方が良い/より賢明です)

現在、htaccessファイルにはこれが含まれていますが、うまくいかないようです。

RewriteCond %{HTTP_HOST} ^admin\.domain\.com$
RewriteRule ^/(.*) /var/www/vhosts/domain.com/sub_dom/admin/ [redirect,last]

おそらく2行目に何か非常に悪いことがあるのでしょうか?

4

1 に答える 1

1

これは可能ですか

これは、vhostまたはserverconfigにあります。/sub_dom/通常のドメインを介してディレクトリにアクセスできない限り、htaccessファイルを使用することはできません。htaccessファイルを使用して、ドキュメントルート外のディレクトリにアクセスすることはできません。

より良い解決策はありますか(たとえば、別の方法で行う方が良い/より賢明です)

それを行う正しい方法は、新しい仮想ホストを作成することです。古い仮想ホストには、次のようなサーバー名が必要です。

ServerName domain.com
ServerAlias www.domain.com

新しいバーチャルホストには、次のものがあります。

ServerName admin.domain.com

そして:

DocumentRoot /path/to/sub_dom/

Apacheのドキュメントには、vhostsを設定するためのチュートリアルがあります

または、通常のドメインから次のようなエイリアスを作成することもできます。

Alias /sub_dom /path/to/sub_dom

次に、domain.comドキュメントルート(httpdocs)でmod_rewriteを使用できます。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^admin\.domain\.com$ [NC]
RewriteCond %{DOCUMENT_ROOT}/sub_dom%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/sub_dom%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}/sub_dom%{REQUEST_URI} -s
RewriteRule ^ /sub_dom%{REQUEST_URI} [L]

しかし、あなたはただに移動/sub_dom/したほうがよいhttpdocsでしょう、それは同じことを達成するでしょう。

于 2012-11-02T21:04:35.727 に答える