在子目录中设置 CakePHP; Wordpress 安装在根目录下

Posted

技术标签:

【中文标题】在子目录中设置 CakePHP; Wordpress 安装在根目录下【英文标题】:Set up CakePHP in a subdirectory; Wordpress is installed in the root 【发布时间】:2012-10-08 11:35:27 【问题描述】:

我一直在寻找解决方案 2 小时,但似乎没有任何效果......这是我的问题:

我在根目录 (var/www) 中安装了 WordPress。因此,通过转到http://www.geekderek.com,我看到了我的 wordpress 网站。

我把 Cakephp 放在一个子目录 var/www/cakephp 中。我希望能够通过以下网址查看我的 CakePHP 应用程序:www.geekderek.com/cakephp。

然而,目前这个 url 只返回一个 Wordpress 页面,上面写着“找不到内容”。

我相信这个问题可以通过在我的根目录中修改 .htaccess 来解决。所以这是我的 .htaccess:http://pastebin.com/sXJTRstB

如您所见,我在默认的 WP .htaccess 文件中添加了这一行:

RewriteRule    ^cakephp(/(.*))?$ cakephp/app/webroot/$1    [QSA,L]

但是,由于某种原因,这似乎不起作用。

谁能告诉我什么是错的?非常感谢!

【问题讨论】:

【参考方案1】:

我有类似的设置,我的蛋糕应用程序在子目录中,我的根 .htaccess 有这个重写规则:

RewriteRule ^cakephp/(.*)$ /cakephp/$1 [L,QSA]

其余的都通过常规的 cakephp 设置处理。

我的 /cakephp/app/webroot/.htaccess:

RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

希望这对你也有用:)

【讨论】:

谢谢,但这对我不起作用。我仍然不断得到一个 wordpress 页面......【参考方案2】:

thanat 的回答几乎对我有用。我只需要编辑 RewriteBase 来阅读

RewriteBase /cakephp

并确保 apache conf 允许我的根目录覆盖其之前的选项

<Directory "/my/root/dir">
AllowOverride All
</Directory>

但话又说回来,我的 app 目录位于 apache 设置的 DocumentRoot 之外。 cakephp 目录实际上是 webroot 本身。所以我的目录结构如下

/my/root
/my/root/app  #cake's app dir without webroot
/my/root/dir  #apache DocumentRoot (your wordpress is here)
/my/root/dir/cakephp  #cake's webroot

还要确保编辑 /my/root/dir/cakephp/index.php,以便它知道 app 和 cake 的库目录在哪里。

【讨论】:

【参考方案3】:

这是我的情况,使用 laravel 但它们是相同的。

https://community.bitnami.com/t/laravel-application-in-subdirectory-of-wordpress-website/79535/2

只需要改变

AllowOverride None => AllowOverride All

【讨论】:

以上是关于在子目录中设置 CakePHP; Wordpress 安装在根目录下的主要内容,如果未能解决你的问题,请参考以下文章

如何在 cakePHP 的控制器中设置分页器页面

如何在 Cakephp 4 的另一个插件中设置对插件的依赖?

在 app_controller 中设置一个变量并在 CakePHP 布局中使用它

CAKEPHP 我是不是必须在控制器中设置 $this->data 才能使用表单助手

如何在 URL 中设置关键字并希望在 Cakephp 控制器中读取该关键字然后将其设置为查看

Wordpres标头背景图片