我有一个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规则会纠正这个问题,但似乎不是。
我希望我已经彻底解释了这一点,如果我能提供我可能忘记的其他信息,请告诉我。谢谢!
答案 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