Правила .htaccess для страницы «Скоро в продаже» на сайте CakePHP - PullRequest
1 голос
/ 14 сентября 2010

Я застрял некоторое время на том, как создать "Скоро" страницу для моего сайта CakePHP.Мне нужно сохранить каталог webroot защищенным с помощью .htpasswd, чтобы только авторизованные пользователи могли получать доступ к сайту во время его создания.Тем не менее, постоянные посетители должны показывать страницу «Скоро», когда они посещают thesiteurl.com или thesiteurl.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 ]

3 голосов
/ 15 сентября 2010

Самый простой способ - поместить файлы открытого доступа в app / views / pages.

  1. Настройте аутентификацию (это легко, и если вы ее еще не изучили, вам нужно будет рано или поздно), чтобы предоставить логин доступ к функциям контроллера.См. http://book.cakephp.org/view/172/Authentication

  2. Если вы еще этого не сделали, скопируйте контроллер страниц из cake / libs / controller в приложение / контроллеры.Убедитесь, что фильтр before в PagesController читает что-то вроде:

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

    См. http://book.cakephp.org/view/854/The-Pages-Controller

  3. Очистите этот htaccess hocus обратно к тому, что было доставлено с тортом - это только собираетсявызвать у вас проблемы позже.

0 голосов
/ 14 сентября 2010

Ну, вот в чем проблема. http://yoursite.com автоматически переходит в каталог webroot. У вас есть файл index.html на один уровень выше руткита, к которому нет доступа. Что вам нужно сделать, это следующее.

/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.

0 голосов
/ 14 сентября 2010

Почему бы не настроить отдельный URL для тестирования?

test.thesiteurl.com

Затем на основной URL можно поместить статический index.html, не перепрыгивая через все обручи.Это позволит тем, кому нужен доступ, получить возможность добраться до нужного места.Те, кто «смотрит снаружи», посетят основной сайт и увидят «Скоро».

Очень часто мы пытаемся объединить сайт разработки с рабочим сайтом, как вы пытаетесь здесь.Не имеет смысла прыгать через все обручи.Только потому, что это МОЖЕТ быть сделано так, как вы предлагаете, я не ДОЛЖЕН делать это таким образом.ПОЦЕЛУЙ всегда лучший вариант.Сделайте это как можно проще.Не тратьте свое драгоценное время, пытаясь выяснить классные фандангообразные способы ведения дел.Особенно, если его просто выбросят на дорогу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...