Zend и .htaccess - PullRequest
       16

Zend и .htaccess

10 голосов
/ 05 января 2010

Мое приложение по умолчанию 'zend' имеет такую ​​структуру по умолчанию

/zend + webroot
    /application
    /config
    /library
    /public
        .htaccess
        index.php

и .htaccess по умолчанию перенаправляет различные подробности контроллера / действия через ./public/index.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Я использую этот URL по умолчанию для доступа к приложению

http://domain/index.php

Я переместился на общий хост, где webroot находится над корнем «zend».

/webroot
    /zend
        /application
        /config
        /public
            index.php
           .htaccess

но я могу получить доступ к своему приложению только по этому URL

http://domain/zend/public/index.php

я хочу иметь возможность использовать

http://domain/zend/index.php

и иметь перенаправление .htaccess.

и мне интересно, как я могу настроить файл .htaccess, чтобы перенаправить запросы URL. Я читаю это учебник но я не работал для меня

/webroot
    /zend
        .htaccess
        /application
        /config
        /library
        /public
            index.php

В данном случае это содержимое .htaccess

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

Кто-нибудь может что-нибудь заметить?

Ответы [ 3 ]

17 голосов
/ 06 января 2010

Создайте файл zend / index.php, содержащий этот код:

<?php include 'public/index.php';

Теперь создайте Zend / .htaccess, содержащий этот код:

SetEnv APPLICATION_ENV development

RewriteEngine On
RewriteRule .* index.php

Убедитесь, что все ваши файлы images / css / js находятся в zend / public /, и не удаляйте файл zend / public / .htaccess:)

Не забывайте, что baseUrl запроса не содержит '/ public', поэтому вам нужно добавить его самостоятельно, когда вы ссылаетесь на общедоступные файлы.

С уважением,

Rob ...

1 голос
/ 05 января 2010

Не забудьте изменить RewriteBase .

0 голосов
/ 06 января 2010

Большинство общих хостов, которые я использовал, по-прежнему позволяют загружать файлы вне веб-корня. Например,

/home/{username}/webroot/

... вы все еще можете загрузить на /home/{username}/ как:

/webroot
    index.php
   .htaccess
/application
/config

Затем в вашей начальной загрузке просто замените public на webroot или, если у вас есть доступ по ssh, удалите существующий веб-корень и замените его символической ссылкой на общедоступный каталог zend, например:

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