无限重定向循环?

无限重定向循环?

我想要 dev.test.com 转到特定目录/var/www/cakephp/dev/webroot。这是我的 apache2 conf 文件:

<VirtualHost *:80>
        ServerName dev.test.com
        Redirect permanent / /var/www/cakephp/dev/webroot
</VirtualHost>

我不断收到连续的301 Moved permanently响应(直到服务器停止发送它们,或者是浏览器停止请求它们?)

GET dev.test.com: http://dev.test.com/var/www/cakephp/dev/webroot
GET webroot: http://dev.test.com/var/www/cakephp/dev/webrootvar/www/cakephp/dev/webroot
GET webroot: http://dev.test.com/var/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webroot
[...] 21 requests later (seriously):
GET webroot: http://dev.test.com/var/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webrootvar/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot/

我通过 firebug 找到了这些响应。有人知道问题可能出在哪里吗?谢谢。

答案1

您所需要的不是重定向,而是 DocumentRoot 吗?

您在这里所做的是将重定向发送回客户端。因此,Apache 将当前 VHost 的名称添加到重定向目标字符串的前面,并发送:

Location: http://dev.test.com/var/www/cakephp/dev/webroot

当然,当它命中时,它会找到 dev.test.com VHost,瞧!那里有一个适用于此请求的重定向。所以它很高兴地将你发送到http://dev.test.com/var/www/cakephp/dev/webroot/(你的请求字符串),其结果为:

Location: http://dev.test.com/var/www/cakephp/dev/webroot/var/www/cakephp/dev/webroot

现在明白了吧?无论如何,你需要的是:

<VirtualHost *:80>
    ServerName dev.test.com
    DocumentRoot /var/www/cakephp/dev/webroot
    <Directory /var/www/cakephp/dev/webroot>
        Order allow,deny
        Allow from all
        Deny from none
    </Directory>
</VirtualHost>

此部分是可选的;仅当您尝试使用具有新 DocumentRoot 指令的站点并收到 403 错误时才添加它。

相关内容