Я путаюсь с Apache vhost - PullRequest
       48

Я путаюсь с Apache vhost

1 голос
/ 09 февраля 2010

Я создаю веб-приложение с 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 ]

1 голос
/ 11 февраля 2011

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

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

0 голосов
/ 10 февраля 2010

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

в 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]

Надеюсь, это поможет некоторым!

...