0

我的 cake 2.2.0 应用程序中的重写规则有问题。

Mod_rewrite 似乎在这里工作:

myapp.com/listings作品

但是 cake 生成的链接构造了这种类型的 URL,它也可以工作,但不会被重写:

myapp.com/app/webroot/index.php/listings

我已经尝试了很多发布的选项,但似乎没有任何效果?

我的 apache 配置设置如下:

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

所有 .htaccess 文件都是蛋糕安装的标准文件?

Webroot .htacess:

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

应用程序.htaccess:

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

根.htaccess:

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

我应该看别的吗?

4

2 回答 2

0

这是您在生成链接时应该能够在 cakephp 中修复的问题。您拥有的 htaccess 文件不会更改页面内容中的链接。

如果出于某种原因,您不能在 cakephp 中执行此操作,那么您可以将其添加到您的 Webroot htaccess 中,就在该RewriteEngine On行的下方:

RewriteCond %{THE_REQUEST} \ /app/webroot/index.php/([^\ ]+)
RewriteRule ^ /%1 [L,R=301]

这会将浏览器重定向到较短的 URL。

于 2013-09-13T15:06:39.553 回答
0

万一其他人看到这个,我的问题是 /app/Config/core.php 中的这一行未注释:

配置::write('App.baseUrl', env('SCRIPT_NAME'));

将其注释掉从我的 URL 中删除了 abs URL /app/webroot/index.php/。

快乐编码。

于 2013-10-12T20:12:40.123 回答