CakePHP:你可以全局修改指向另一个目录的所有链接吗?

时间:2013-04-09 18:33:11

标签: .htaccess cakephp mod-rewrite cakephp-2.0

我的CakePHP应用程序位于一个子目录中,以防止它崩溃到为网站的一部分提供动力的Wordpress安装中:

example.com/ <--root
    /_wp     <--Wordpress installed here
        /page1
        /page2
    /_cake   <--CakePHP installed here
        /page3
        /page4

为了保持一致性,我使用mod_rewrite规则将example.com/_cake/pageX中的URL重写为example.com/pageX等。这基本上有效,但CakePHP仍然使用/ _cake / pageX创建链接。因此,如果用户将鼠标悬停在链接上,那么&#34; _cake&#34;将显示在浏览器的底部,当然还会显示在源代码中。

有没有办法让CakePHP认为它实际上在网站根目录中,所以它为链接等创建了所需的URL?

1 个答案:

答案 0 :(得分:0)

我还没有找到按照你想要的方式配置CakePHP的方法。

如果您使用HtmlHelper::linkRouter::url创建链接,则可以向$url['base'] = false数组参数添加成员$url。这可以防止_cake前缀插入到URL前面。

作为替代方案,您可以创建自己的link()url()功能,该功能会调用HtmlHelper::link并始终添加base = false

要使其工作,您还必须在文档根目录中有一个.htaccess,它会将请求重写到其真实目的地

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /_cake/$0 [L]

您还必须注意发往_wp目录的请求。