나는 Apache Vhost와 혼란스러워합니다
문제
Zend Framework를 사용하여 웹 응용 프로그램을 구축하고 있으며 응용 프로그램의 "공개"폴더에 앱을 가리켜 야합니다.
그래서 기본적으로 내가 전화 할 때 http://localhost/myapp
표시해야합니다 http://localhost/myapp/public/
MyApp라는 가상 호스트 파일을/etc/apache2/sitees-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]
이것이 도움이되기를 바랍니다!
다른 팁
첫 번째 목록에는 디렉토리 태그에 대해 다른 값이 있었으며 '공개'를 모두 꺼냅니다. Docroot 값으로 '공개'후에도 후행 슬래시가 있었지만 두 번째 시도에서 제거되었습니다. 그 차이가 확실하지 않지만 후행 슬래시를 포함하지 않는 것이 좋습니다.
또한 궁금합니다 ... 로컬 컴퓨터에서 이것을 실행하고 있습니까? Apache 서버 전에 실행을 시작하면 Skype가 Port 80을 사용하고 싶어하는 데 어려움을 겪었습니다. 80이 이미 사용 된 경우 Skype가 다른 포트를 사용합니다. Skype가 아닌 경우 Port 80을 사용하고 간섭하는 다른 앱이있을 수 있습니다. 그렇기 때문에 다른 항구에서 성공한 이유 일 수 있습니다.