![无限重定向循环?](https://linux22.com/image/517401/%E6%97%A0%E9%99%90%E9%87%8D%E5%AE%9A%E5%90%91%E5%BE%AA%E7%8E%AF%EF%BC%9F.png)
我想要 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 错误时才添加它。