2015-05-21 82 views
2

刪除/應用程序/ webroot的我所擁有的配置與我的.htaccess文件的一個小問題:CakePHP的:在指數與的.htaccess

問題的說明:

  • CakePHP的文檔根目錄是在根域在哪裏我的域指向:www.example.com
  • 當我去www.example.com它重定向到www.example.com/app/webroot
  • 當我瀏覽更深的目錄時,一切工作正常,例如:www .example.com/Controller/action在url上不會有app/webroot。

我的.htaccess:

根:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/
    RewriteRule ^$ app/webroot [L] 
    RewriteRule (.*) app/webroot/$1 [L] 

</IfModule> 

/應用:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

/應用程序/ webroot的

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 

回答

0

到examp唯一的區別les在offical docs中提供的是RewriteBase指令的位置。

所以,我建議嘗試以下(未經測試):

  • root/.htaccess

    • 刪除RewriteBase /

      <IfModule mod_rewrite.c> 
          RewriteEngine on 
          RewriteRule ^$ app/webroot/  [L] 
          RewriteRule (.*) app/webroot/$1 [L] 
      </IfModule> 
      
  • app/webroot/.htaccess

    • 這裏添加RewriteBase指令和調整你的文件夾

      <IfModule mod_rewrite.c> 
          RewriteEngine On 
      
          RewriteBase /path/to/cake/app 
      
          # exclude dirs and files 
          RewriteCond %{REQUEST_FILENAME} !-d 
          RewriteCond %{REQUEST_FILENAME} !-f 
      
          # prevent invalid assets from being parsed by CakePHP 
          RewriteCond %{REQUEST_URI} !^/(webroot/)?(img|css|js)/(.*)$ 
      
          RewriteRule^index.php [L] 
      </IfModule> 
      

我覺得Cake2使用QueryStringAppend(QSA)作爲RewriteRule的index.php文件。 然後最後一條規則是RewriteRule ^(.*)$ index.php [QSA,L],但這取決於您的Cake版本。

附註:啓用Rewrite Logging for Apache。這有助於調試重寫規則。不要忘記再次關閉此功能。

RewriteLogLevel 3 
RewriteLog "/var/apache/logs/rewrite.log