Виртуальный хост Apache в определенном каталоге - PullRequest
1 голос
/ 29 июля 2011

Мне нужно, чтобы на моем сайте был виртуальный хост в определенном каталоге для моего приложения Zend. Когда пользователь вводит www.example.com, он должен перейти к обычному корню документа, но когда пользователь переходит к www.example.com/cms, он должен перейти к /var/www/cms/public, его файл .htaccess выглядит следующим образом:

SetEnv APPLICATION_ENV development

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

На локальном хосте я добавил эти строки в /etc/apache/httpd-vhosts.conf:

NameVirtualHost *:80
<VirtualHost  *:80>
   DocumentRoot "/var/www/cms/public"
   ServerName persian_literature
   # This should be omitted in the production environment
   SetEnv APPLICATION_ENV development
   <Directory "/var/www/cms/public">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride All
       Order allow,deny
       Allow from all
   </Directory>
</VirtualHost>

Теперь http://localhost/ переходит к /var/www/cms/public, и все работает. Мой вопрос заключается в том, как изменить код выше, чтобы заставить http://localhost/ быть обычным корневым каталогом (чтобы я мог использовать другие приложения), а http://localhost/cms - виртуальным хостом?

Ответы [ 2 ]

3 голосов
/ 29 июля 2011

Виртуальный хост выполняется на уровне имени хоста / имени домена, а не на уровне каталога.Вы можете использовать псевдоним, чтобы указать URI / cms на какой-либо другой каталог на вашем сервере, поместив

Alias /cms /var/www/cms/public

в файл .conf (это не будет работать в .htaccess)

0 голосов
/ 29 июля 2011

Может быть, символическая ссылка (символическая ссылка)?Вы все еще должны иметь запись, конечно.И вам нужно будет указать в конфиге (я думаю, vhost config, возможно, .htaccess), что apache должен следовать по символической ссылке.

...