1

我有一个问题,用 CakePHP 1.3 编写了一个 Webapp,它运行良好,所以我想使用较新的 cake 版本,并在我的本地 Apache 上复制它(在旧的 Cake 运行正常之前可能具有正确的配置)它显示mod_rewrite 不起作用的错误。所以我不明白,因为如果我比较两个蛋糕版本的 .htaccess 会有很多差异,所以我尝试将旧的 .htaccess 用于较新的蛋糕 2.3,但得到了错误 500。

所以我真的不明白这个问题,因为 Apache 肯定配置正确。

这是我的 .htaccess 文件(cake 2.3.1)包含的内容:

蛋糕/

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) 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 [QSA,L]
</IfModule>

非常感谢您的帮助!

4

1 回答 1

1

我的 webroot htaccess 看起来像

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
</IfModule>

并且适用于 2.x

但推荐的方法是

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

当你排队时。这应该适用于所有系统。

webroot htaccess

还要确保 mod_rewrite 不仅可用,而且允许通过 htaccess 启用。您将需要虚拟主机/配置设置中的“AllowOverride All”之类的东西。并非所有地方都是默认设置。

于 2013-03-06T10:19:56.430 回答