2013-02-07 29 views
1

我想從Cake(根文件夾應用程序)中排除第一級目錄,因爲它應該包含不同的應用程序。從CakePHP應用程序中排除根文件夾

/保存應用程序

/開發/保存應用程序的測試版本

的目錄結構:

公用文件夾

.htaccess [modified] 
app 
    .htaccess [unmodified] 
    webroot 
     .htaccess [unmodified] 
     index.php [unmodified] 
     ... 
    ... 
lib 
    Cake 
    ... 
development 
    app 
     webroot 
      index.php [dumps $_SERVER for test purposes] 

所以,我的發展格局依然沒有按裏面沒有應用程序(也沒有.htaccesses),只是爲了測試我的根.htaccess是否有效。

這是我的根的.htaccess的修改:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{REQUEST_URI} ^/development.* 
    RewriteRule (.*) - [L] 

    RewriteRule ^$ app/webroot/ [L] 
    RewriteRule (.*) app/webroot/$1 [L] 
</IfModule> 

會發生什麼:

/開發/顯示發展文件夾的阿帕奇指數

/開發/應用/節目應用程序文件夾的apache索引

/development/app/webroot顯示根應用程序(請求是captu紅色儘管發展網址匹配)。

/development/app/webroot應該向我展示我的/development/app/webroot/index.php文件,對不對?

我到底在想什麼?

+2

不容易創建一個虛擬主機(可能有不同的端口)來託管你的開發網站?並且這個虛擬主機會指向/ development/app/webroot ..或者可能是一個子域 – pleasedontbelong

+0

通常,是的。但我需要使用第三方SOAP服務進行測試,該服務使用安裝在主服務器上的SSL證書,這就是爲什麼我需要將它放在子目錄中。這也是解決一個共同問題的問題。恕我直言,任何平臺都應該能夠輕鬆地與其他站點上的系統共享,而不會佔用根空間。 –

回答

3

這原來是我服務器上的一個古怪的bug。

產生的.htaccess其現在的工作是:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{REQUEST_URI} !^/development(?:$|/) 
    RewriteRule ^$ app/webroot/ [L] 

    RewriteCond %{REQUEST_URI} !^/development(?:$|/) 
    RewriteRule (.*) app/webroot/$1 [L] 

</IfModule> 

不知什麼原因對我來說,如果我通過SSH連接到我的用戶帳戶,並通過命令行編輯的.htaccess文件,它不會工作!

當我上傳相同的文件(通過SFTP)時,它開始正常工作。

我在CentOS(5.9)上使用cPanel(11.34.1)。

又如:如果你想「忽略」在CakePHP安裝多個子文件夾,您可以使用此模式:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    # /development, /version1.5 and /version1.8 directories 
    # they all hold independent apps 
    # or completely non-cake-related content 

    RewriteCond %{REQUEST_URI} !^/(?:development|version1\.5|version1\.8)(?:$|/) 
    RewriteRule ^$ app/webroot/ [L] 

    RewriteCond %{REQUEST_URI} !^/(?:development|version1\.5|version1\.8)(?:$|/.*) 
    RewriteRule (.*) app/webroot/$1 [L] 

</IfModule> 

注意兩個RewriteCond指令是相同的。

+0

\ \。在模式中用於捕捉實際點。沒有\,點意味着_任何字符。 –

+0

把這個片段放在[Gist](https://gist.github.com/dizyart/4733257)上,這樣你可以在以後收藏它。 ;) –