使用mod_rewrite修改CakePHP驻留的Wordpress重定向

时间:2009-10-09 21:25:36

标签: wordpress .htaccess mod-rewrite cakephp

我有一个CakePHP网站,其中包含一个vanilla Wordpress安装。它住在/app/webroot/blog/。我遇到的问题很奇怪。

我通过mod重写配置了网站,将所有请求重定向到/app/webroot/blog/blog/。原因是当用户通过app/webroot路径访问时,Wordpress会抛出错误或显示没有内容,如果您在/blog/访问它,它就可以正常工作。如果用户试图在没有尾部斜杠的情况下访问/app/webroot/blog,它也会将用户重定向到/blog,因此我们也添加了该值。以下是我们用来完成此操作的mod_rewrite规则:

RewriteRule    ^blog$ blog/ [L]
RewriteRule    ^app/webroot/blog/(.*)$ blog/$1 [L]

当用户尝试访问Wordpress的管理部分但未经过身份验证时,会将其发送到/wp-login.php页面并发送一个名为redirect_to的查询字符串参数,其中包含用户所在的URL最初在被要求进行身份验证之前尝试访问。此网址包含完整路径(/app/webroot/blog/...),而不仅仅是/blog,即使原始请求是/blog中的网页。如果用户成功进行身份验证,则会将用户发送回登录页面,就好像没有任何操作(没有错误消息等)。

我会假设上面列出的第二个mod_rewrite规则会纠正这个问题,但似乎不是。

我希望我已经彻底解释了这一点,如果我能提供我可能忘记的其他信息,请告诉我。谢谢!

2 个答案:

答案 0 :(得分:2)

你试过检查wp数据库中的wordpress选项吗?您应该确保两个选项是正确的。 siteurl 主页。两者都应该是http://yoursite.com/blog

答案 1 :(得分:0)

您的文档根目录是什么? 制作app / webroot /你的文档根目录,你不需要任何额外的重写规则,因为CakePHP的默认重写规则已经有了现有文件和目录的规则:

所以你的/app/webroot/index.php将是你带有地址的应用程序入口点... /,

和app / webroot / blog /将是带有地址的wordpress入口点... / blog /

此配置的默认重写规则已足够:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d # this will go to your blog dir, if it exists
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] # this is CakePHP app