【问题标题】:cake .htaccess rewrite almost workingcake .htaccess 重写几乎可以工作
【发布时间】:2013-09-13 11:55:16
【问题描述】:

我的 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 文件都是 cake install 的标准文件?

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>

我应该看看别的吗?

【问题讨论】:

    标签: .htaccess cakephp


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢乔恩,我就是这么想的,但是这些网址是从蛋糕中生成的,我不知道在哪里可以修改它们?
    【解决方案2】:

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

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

    评论它从我的 URL 中删除了 abs URL /app/webroot/index.php/。

    编码愉快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多