Вопрос

Я создаю веб-приложение с помощью Zend Framework, и мне нужно указать моему приложению на "общедоступную" папку приложения:

Так что в основном, когда я звоню http://localhost/myapp он должен отображать http://localhost/myapp/public/

Я создал файл виртуального хоста под названием myapp в /etc/apache2/sites-available/:

    <VirtualHost *:80>
DocumentRoot /var/www/myapp/public/
 <Directory />
  Options FollowSymLinks
  AllowOverride None
 </Directory>
 <Directory /var/www/myapp/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
 </Directory>

</VirtualHost>

Но это не работает.Когда я звоню http://localhost/myapp, он отображает структуру каталогов приложения, и когда я нажимаю на "общедоступную" папку, тогда он отображает то, что я хочу, чтобы отображалось по умолчанию...Я никогда раньше не настраивал vhosts, и это все, что я получил из руководств по этому поводу.

Это было полезно?

Решение 2

Хорошо, я каким-то образом нашел способ...Я не думаю, что это обязательно правильный / наилучший способ, но...

в httpd.conf (в папке apache2):

Listen 10089

<VirtualHost *:10089>

    DocumentRoot "/var/www/myapp/public"

    <Directory "/var/www/myapp/public">

        Order allow,deny

        Allow from all

    AllowOverride all

</Directory>

</VirtualHost>

Мое приложение теперь доступно через localhost: 10089 После включения мода перезаписи в apache я добавил необходимый .htaccess, один в корне моего приложения, перенаправив все на index.php (Zend framework поддерживает удобную навигацию по URL и работает таким образом):

RewriteEngine on

RewriteRule .* index.php

и второй файл .htaccess внутри моей общедоступной папки, позволяющий людям получать доступ к файлам .jpg, .ico и т.д. И не перенаправляться на индексацию для всего:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]

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

Надеюсь, это кому-то поможет!

Другие советы

В вашем первом списке у вас было другое значение для тега Directory, и вы вообще исключили 'public'.В значении DocRoot также была косая черта после 'public', но она была удалена со второй попытки.Не уверен, что это что-то изменило, но я считаю, что рекомендуется не включать завершающие косые черты.

Кроме того, просто интересно...вы запускаете это на локальном компьютере?У меня были проблемы с тем, что Skype захотел использовать порт 80, если я начал запускать его перед своим сервером apache.Skype будет использовать другой порт, если 80 уже используется.Если это не Skype, возможно, существует другое приложение, которое использует порт 80 и создает помехи.Возможно, именно поэтому вы добились успеха в другом порту.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top