1

cpanelに*.mydomain.comサブドメインを設定しました(cpanel、シェルアクセスなし)anything.mydomain.comに移動すると、*。mydomain.com用にマウントしたのと同じディレクトリに移動します

したがって、.htaccessに次のようにtest.mydomain.comにアクセスすると、

適切に機能するのは次のとおりです。

RewriteEngine on
RewriteCond %{HTTP_HOST}   ^(.+)\.(.+?\..+?)$ [NC]
RewriteCond %{REQUEST_URI} !^/test/(.+)?$
RewriteRule ^(.*)  /%1/$1

動作せず、500エラーが発生するのは次のとおりです(テストを%1に置き換えただけです)。

RewriteEngine on
RewriteCond %{HTTP_HOST}   ^(.+)\.(.+?\..+?)$ [NC]
RewriteCond %{REQUEST_URI} !^/%1/(.+)?$
RewriteRule ^(.*)  /%1/$1

私がやりたいのは、その名前のサブディレクトリが存在する場合にサブドメインの動的セットアップを許可することです。.htaccessでサブドメイン名のテストをハードコーディングすると、逆参照%1を使用するときではなく、正常に書き換えが行われます。

4

1 に答える 1

2

の正規表現の一部として%変数または後方参照を使用することはできませんRewriteCond。後方参照と#正規表現後方参照を使用して文字列を作成できます。

 RewriteCond %1:%{REQUEST_URI} !^([^:]+):/\1/(.+)?$

したがって、ホスト一致のサブドメイン、コロン、次にURIで構成される文字列を作成し、正規表現のサブドメインと一致させ、\1を使用して参照します。

さらに、不一致%{HTTP_HOST}を逆参照できないために%1後方参照がリセットされた可能性があるため、直後に別の一致を追加する必要がある場合があります。

于 2012-08-18T19:50:24.953 に答える