マシンにローカル Apache サーバーをセットアップし、ワイルドカード DNS を設定しています。のように動作するように設定しました[foldername].loc
。したがって、たとえば、私のフォルダの下にある というフォルダには、htdocs
経由MyDomain
でアクセスできますmydomain.loc
。このコードは正常に動作し、my .htaccess
in myのコードhtdocs
は次のとおりです。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]*\.)?([a-z0-9-]+)\.loc$ [NC]
RewriteCond %3::%{REQUEST_URI} !^(.*?)::/\1/?
RewriteRule (.*) /%3/$1 [PT,QSA]
現在、上記のコードは「john.mydomain.loc」などのサブドメインも通過します。これで、フォルダーに次のフォルダー構造がありますMyDomain
。
MyDomain
- active
- index.php
- working
- index.php
.htaccess
.htaccess
of にはMyDomain
次のコードがあります。
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^live\.mydomain\.loc$ [NC]
RewriteRule ^(.*)$ /active/$1 [L]
私が正しく理解している場合、これがすべきことは、http://live.mydomain.loc/
それを に書き換えることhttp://mydomain.loc/active/
です。redirectではなくrewriteと言ったことに注意してください。
ただし、上記のコードでは、Apache エラー ログに次のメッセージが表示されます。
[client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
.htaccess
ofを次のように変更するとMyDomain
、次のようになります。
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^live\.mydomain\.loc$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /active/$1 [L]
このコードを使用すると、常に 403 エラーが発生し、フォルダーを表示する権限がないことを示します/mydomain/
。を設定Options +Indexes
すると、 のフォルダ インデックスのみが表示されます/mydomain
。では、上記のコードはどこで失敗しているのでしょうか?
で上記のコードも試しましたRewriteCond %{REQUEST_URI} !^/active/
。これは結果に違いはありませんでした。
これを2日以上試しましたが、わかりません。StackOverflow の優秀な頭脳がこれを理解するのに役立つことを願っています。:)