CakePHP网站上“即将推出”页面的.htaccess规则

时间:2010-09-14 12:17:33

标签: .htaccess cakephp

我已经被困了一段时间,如何为我的CakePHP网站创建一个“即将推出”页面。我需要通过webroot保护.htpasswd目录,以便只有授权用户才能在构建时访问该站点。但是,常规访问者在访问thesiteurl.comthesiteurl.com/index.html时应显示“即将推出”页面。所有授权用户都可以访问thesiteurl.com/index.php并输入登录凭据来访问网站的其余部分。

这是相关文件的目录结构,我认为我需要编辑才能使其正常工作。

/.htaccess
/comingsoon - directory containing images, css and js for the coming soon page
/index.html - the "Coming Soon" page
/index.php - the page authorised users use to access the site
/webroot/.htaccess
/webroot/index.php

.htaccess的内容

DirectoryIndex index.html

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !/
    RewriteCond %{REQUEST_URI} !/index\.html
    RewriteRule ^$ webroot/ [L]
    RewriteRule (.*) webroot/$1 [L]
</IfModule>

webroot / .htaccess的内容

AuthName "Restricted Area"
AuthType Basic
AuthUserFile /path/to/my/.htpasswd
AuthGroupFile /dev/null
require valid-user

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

这些.htaccess规则只会将我带到webroot目录文件列表中,如果我尝试访问thesiteurl.com,并且如果我访问thesiteurl.com/index.html,则会将空白页面设置为与我网站的其余部分相似。 thesiteurl.com/index.php会将我带到授权用户登录后看到的索引页面。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

蛋糕方式是将公共访问文件放入app / views / pages。

  1. 设置身份验证(这很容易,如果你     还没有学到它,你会的     需要迟早)给予     登录访问控制器     功能。请参阅http://book.cakephp.org/view/172/Authentication

  2. 如果您还没有这样做,请复制     页面控制器来自     cake / libs / controller into     应用程序/控制器。确保     在PagesController中过滤之前     读取类似的内容:

    function beforeFilter()
    {
        parent::beforeFilter();
        $this->Auth->allowedActions = array('display');
    }
    

    请参阅 http://book.cakephp.org/view/854/The-Pages-Controller

  3. 将htaccess hocus清理干净     蛋糕送的是什么 - 它只会在以后引起你的问题。

答案 1 :(得分:0)

为什么不为测试设置单独的网址?

test.thesiteurl.com

然后在主网址上,您可以放置​​一个静态index.html而不会跳过所有的箍。这将允许需要访问权限的人到达他们需要的位置。那些“外面看”的人将访问主要网站并看到“即将推出”。

我们经常尝试将开发网站与生产网站合并,就像您在这里尝试一样。跳过所有的篮球是没有意义的。只是因为它可以按照你建议的方式完成,不是我,你应该这样做。吻。永远是最好的选择。保持尽可能简单。不要浪费你宝贵的时间来试图找出很酷的fandangoed做事方式。特别是如果它将被抛弃在路上。

答案 2 :(得分:0)

这就是问题所在。 http://yoursite.com会自动转到webroot目录。您的index.html文件比webroot高一级,无法访问。您需要做的是以下几点。

/webroot
    /beta - directory containing all beta site pages
        .htaccess - Contains your restricted area code
        index.php - the page authorised users use to access the site
    .htaccess
    index.html - the "Coming Soon" page

然后,当您想要查看临时站点时,请转到http://yoursite.com/beta。 / Webroot是存储网站文件的文件夹。现在你只有webroot中的限制区域文件,这些文件都是apache(或者你正在使用的w / e)可以看到的。或者,您可以将文件移动到webroot文件夹,但我的方式是这样,所以用户不必“尝试”登录即可看到即将到来的页面。我知道当我去一个网站时它要求我登录而不告诉我任何事情,我认为开发人员不知道发生了什么,并且他的网站被破坏了,通常不会返回。我的方法只有在他们转到你的/ beta目录时才会提示登录。