2009-10-09 19 views
1

我有一个包含vanilla Wordpress安装的CakePHP站点。它住在/app/webroot/blog/。我遇到的问题是一个奇怪的问题。使用mod_rewrite修改CakePHP驻留的Wordpress重定向

我已通过mod重写将站点配置为将所有请求重定向至/app/webroot/blog/blog/。这是因为当用户通过app/webroot路径访问它时,Wordpress要么抛出错误,要么显示没有内容,并且如果您访问它/blog/,它工作得很好。如果他们试图访问/blog而没有结尾斜线,它也会将用户重定向到/app/webroot/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

你有没有试过在wp数据库中检查wordpress选项。有两种选择你应该确保它是正确的。 siteurl and home。两者应该是http://yoursite.com/blog

+0

是的,这些值都设置正确。 – inkedmn 2009-10-12 14:15:43

0

什么是您的文档根目录? 让应用/ Webroot公司/您的文档根目录,你会不会需要任何额外的重写规则,因为CakePHP的默认重写规则已经有现有的文件和目录的规则:

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

和应用程序/ Web根目录/博客/将WordPress的切入点与地址... /博客/

默认重写规则足以让这个配置:

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