301-Redirect

無限重定向循環?

  • March 19, 2012

我想要 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/

我通過螢火蟲找到了這些回复。任何人都知道問題可能是什麼?謝謝。

您需要 DocumentRoot 而不是 Redirect 嗎?

您在這裡所做的是將重定向發送回客戶端。因此,發生的事情是 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/(yourrequeststring),其結果是:

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 時才添加它。

引用自:https://serverfault.com/questions/155028