2010-02-09 3 views
1

Я строю веб-приложение с Zend Framework, и мне нужно указать мое приложение к «общественности» папку приложения:Я путать с Apache виртуальный хост

Так в основном, когда я называю http://localhost/myapp он должен дисплей http://localhost/myapp/public/

Я создал виртуальный хост-файл с именем MyApp в/и т.д./apache2/сайты-доступные /:

<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 раньше, и это до тех пор, пока Я получил уроки об этом.

ответ

0

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

в 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-платформы поддерживает дружественную навигацию по 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] 

Надеется, что это поможет некоторому!

1

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

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

Смежные вопросы