我在我的机器上设置了一个本地 Apache 服务器,并使用了通配符 DNS。我已将其设置为像[foldername].loc
. 因此,例如,我的文件夹下htdocs
名为MyDomain
, 的文件夹将通过mydomain.loc
. 这段代码工作正常,我.htaccess
在我的代码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/
. 请注意,我说的是重写,而不是重定向。
但是,使用上面的代码,我在 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/
。这对结果没有影响。
我已经尝试了两天多,但我无法弄清楚。我希望 StackOverflow 的聪明才智可以帮助解决这个问题。:)