0

マシンにローカル Apache サーバーをセットアップし、ワイルドカード DNS を設定しています。のように動作するように設定しました[foldername].loc。したがって、たとえば、私のフォルダの下にある というフォルダには、htdocs経由MyDomainでアクセスできますmydomain.loc。このコードは正常に動作し、my .htaccessin 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

.htaccessof には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.

.htaccessofを次のように変更すると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 の優秀な頭脳がこれを理解するのに役立つことを願っています。:)

4

2 に答える 2

1

ファイルが実際にある場所に書き換えベースを設定してみてください。

RewriteEngine On
RewriteBase /MyDomain/
RewriteCond %{HTTP_HOST} ^live\.mydomain\.loc$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ active/$1 [L]

そして/active/相対を作る:active/

于 2013-05-05T17:09:21.413 に答える
0

以下のコードを使用してこれを解決しました。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^live\.mydomain\.loc$ [NC]
RewriteCond %{REQUEST_URI} !^/mydomain/active/
RewriteRule ^(.*)$ active/$1 [L]

主な修正はRewriteCond %{REQUEST_URI} !^/mydomain/active/. 違いは、私が試した最初の行RewriteCond %{REQUEST_URI} !^/active、 は一致しますが、一致/access/index.phpしません/mydomain/active/index.php

これが他の誰かに役立つことを願っています。

于 2013-05-06T11:51:44.543 に答える