【问题标题】:Modifying CakePHP-resident Wordpress Redirects using mod_rewrite使用 mod_rewrite 修改 CakePHP 驻留的 Wordpress 重定向
【发布时间】:2010-12-05 11:46:34
【问题描述】:

我有一个包含原版 Wordpress 安装的 CakePHP 站点。它住在/app/webroot/blog/。我遇到的问题很奇怪。

我已通过 mod rewrite 将站点配置为将所有请求重定向到 /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在被要求进行身份验证之前。此 URL 包含完整路径 (/app/webroot/blog/...) 而不是仅仅转到 /blog,即使原始请求是 /blog 中的页面。如果用户成功通过身份验证,则将用户发送回登录页面,就好像什么都没发生一样(没有错误消息等)。

我认为上面列出的第二个 mod_rewrite 规则可以解决问题,但似乎并非如此。

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

【问题讨论】:

    标签: wordpress .htaccess mod-rewrite cakephp


    【解决方案1】:

    您是否尝试过检查 wp 数据库中的 wordpress 选项。您应该确保有两个选项是正确的。 siteurl 和 home。两者都应该是http://yoursite.com/blog

    【讨论】:

      【解决方案2】:

      您的文档根目录是什么? 将 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-23
        • 2012-02-22
        • 1970-01-01
        • 2010-10-12
        • 2011-04-14
        相关资源
        最近更新 更多