7

サブドメインに基づいて特定のコンテンツを提供するサイトがあります。したがって、これは同じファイルセットであり、サイトページのヘッダーと一部の情報はサブドメインに基づいて変更される可能性があります。

サブドメインに基づいて異なるhtpassword認証を行う必要もありますが、htaccessでif/thenタイプの処理を行う方法に関する情報が見つかりません。

基本的に私が必要なのはこれです:

subdomain ='abc'の場合、このhtpasswordファイルを使用します

subdomain ='def'の場合、このhtpasswordファイルを使用します

これはできますか?

4

5 に答える 5

4

次のようなことを試してください:

SetEnvIf Host ^abc\. HOST_ABC
SetEnvIf Host ^dev\. HOST_DEF

<IfDefine HOST_ABC>
    AuthUserFile …
</IfDefine>
<IfDefine HOST_DEF>
    AuthUserFile …
</IfDefine>
于 2009-08-06T15:50:02.200 に答える
0

どのウェブサーバーを使用していますか?

いくつかの異なるサーバーで機能する可能性のある手法 (確かに apache で機能します) は、各サブドメインに対応するディレクトリに異なる .htaccess ファイルを配置することです。

于 2009-08-05T18:28:40.043 に答える
0

htaccess は命令のリストではないため、if/else は使用できません。ただし、<IfModule mod_rewrite.c> や <IfDefine something> などの条件付きブロックを使用する場合は、要求されているサブドメインに基づいて異なるディレクティブを使用できます。どちらを使用するかはわかりませんが...

ファイルの 1 レベル上に 1 つの .htaccess ファイルを置き、 <Directory something> を使用して各サブドメインに異なるルールを指定することもできますが、サブドメイン ディレクトリはすべて、共有ファイルと同じディレクトリへのシンボリック リンクになります。

したがって、これは Web ルートの上のディレクトリになります:
.htaccess
sitefiles
subdomain1 (sitefiles へのシンボリックリンク)
subdomain2 (sitefiles へのシンボリックリンク)
...

于 2009-08-05T18:37:32.240 に答える
0

もしそれが私だったら(そして私はこれまでにこれをやろうとは思っていませんでした)、私は次のようにします:

  1. いくつかの要因 (IF/ELSE のエミュレート) に応じて、 mod_rewriteを使用して異なるサイト ルート (/suba または /subb) への内部リダイレクトを使用します。
  2. public ディレクトリではシンボリック リンクを使用しますが、.htaccess では使用しません。

それで:

/sites/subdomain_a/.htaccess
/sites/subdomain_a/pub
/sites/subdomain_b/.htaccess
/sites/subdomain_b/pub

どこ

/sites/subdomain_a/pub == /sites/subdomain_b/pub

使用して

ln -s

または類似。次に、mod_rewrite を使用して (内部的に) 適切なサイト ルートにリダイレクトします。.htaccess が読み込まれる前に mod_rewrite が実行されると思います。

これは、サブドメインに応じて異なる .htaccess で同じサイト ファイルを効果的に提供していることを意味します。

これが役に立てば幸いです。ちょっとしたハックです。

より良いものが存在するかどうかを確認することに興味があります。

于 2009-08-05T18:33:40.830 に答える