У меня есть локальный сервер Apache, настроенный на моей машине, с подстановочным DNS на месте. Я настроил его так, чтобы он работал как [foldername].loc
. Так, например, папка под моей папкой htdocs
с именем MyDomain
будет доступна через mydomain.loc
. Этот код работает отлично, и код в моем .htaccess
в моем htdocs
ниже:Переписать субдомен в подпапку вызывает ошибку цикла или 403
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
из MyDomain
имеет следующий код:
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} ^live\.mydomain\.loc$ [NC]
RewriteRule ^(.*)$ /active/$1 [L]
Что это должно делать, если я правильно понимаю, это взять http://live.mydomain.loc/
и переписать его как http://mydomain.loc/active/
. Обратите внимание, что я сказал rewrite, а не redirect.
С выше коде, однако, я получаю сообщение в журнале ошибок 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
из 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/
. Это не повлияло на результаты.
Я пробовал это более двух дней, и я не могу понять это. Я надеюсь, что блестящие умы StackOverflow помогут понять это. :)
Спасибо, и пока я чувствую, что мы на правильном пути, он не совсем сработал. Это выдержка из моего файла журнала перезаписи: 'internal redirect with/mydomain/active/active/active/active/active/active/active/active/active/active/[INTERNAL REDIRECT]' Это последняя строка log, и, по-видимому, мы где-то пропустили точку цикла. Есть предположения? –
Я понял. Я представил его в качестве ответа. Спасибо за помощь. :) –