Apache Cakephp:使用.htaccess删除索引上的/app/webroot

Apache Cakephp:使用.htaccess删除索引上的/app/webroot,apache,.htaccess,cakephp,Apache,.htaccess,Cakephp,我在配置.htaccess文件时遇到了一个小问题: 对问题的解释: cakephp文档根位于我的域指向的根上:www.example.com 当我转到www.example.com时,它会重定向到www.example.com/app/webroot 当我浏览到更深的目录时,一切正常,例如:www.example.com/Controller/action的url上不会有app/webroot 我的.htaccess: 根目录: 重新启动发动机 重写基/ 重写规则^$app/webroot

我在配置.htaccess文件时遇到了一个小问题:

对问题的解释:

  • cakephp文档根位于我的域指向的根上:www.example.com
  • 当我转到www.example.com时,它会重定向到www.example.com/app/webroot
  • 当我浏览到更深的目录时,一切正常,例如:www.example.com/Controller/action的url上不会有app/webroot
我的.htaccess:

根目录:


重新启动发动机
重写基/
重写规则^$app/webroot[L]
重写规则(*)app/webroot/$1[L]
/应用程序:


重新启动发动机
重写规则^$webroot/[L]
重写规则(.*)webroot/$1[L]
/app/webroot

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

重新启动发动机
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]

与中提供的示例的唯一区别是
RewriteBase
指令的位置

因此,我建议尝试以下方法(未经测试):

  • root/.htaccess

    • 删除
      RewriteBase/

      <IfModule mod_rewrite.c>
         RewriteEngine on
         RewriteRule    ^$ app/webroot/     [L]
         RewriteRule    (.*) app/webroot/$1 [L]
      </IfModule>
      
我认为Cake2使用QueryStringAppend(QSA)作为index.php的
RewriteRule
。 最后一条规则是
RewriteRule^(.*)$index.php[QSA,L]
,但这取决于您的Cake版本

旁注:启用。这有助于调试重写规则。别忘了再次关闭此功能

RewriteLogLevel 3
RewriteLog "/var/apache/logs/rewrite.log
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/     [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>
<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>
RewriteLogLevel 3
RewriteLog "/var/apache/logs/rewrite.log