У меня проблемы с настройкой файлов httpd.conf или .htaccess для распознавания нескольких сайтов фреймворка zend на одном сервере.
Для разработки у меня есть только один сервер, и я пытаюсь настроить сайты, чтобы получить к ним доступ, например localhost / app1, localhost / app2 и т. Д.
Итак, прямо сейчас, когда я перехожу на localhost / app1 он успешно перенаправляет на localhost / app1 / public / index.php, однако, когда я перехожу на localhost / app1 / index / index, я получаю 404.
Вот мой файл vhosts:
ServerAdmin webmaster@localhost
DocumentRoot "/var/www"
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ErrorLog logs/error.log
CustomLog logs/access.log common
, а вот мой.htaccess из каталога / var / www / app1:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ /app1/public/index.php [NC,R,L]
Если я изменю строку DocumentRoot в файле vhosts на DocumentRoot "/ var / www / app1 / public"
, тогда app1 будет работать правильно, но Я могу получить доступ только к нему ... по адресу http: // localhost . Это возможно? Я хочу, чтобы это произошло, если / var / www является корнем документа, тогда, если я перейду на localhost / app1, эти запросы необходимо перенаправить на localhost / app1 / public / index.php, и если я перейду на localhost / app2, эти запросы нужно перенаправить на localhost / app2 / public / index.php.
Надеюсь, я ясно объяснил это, любая помощь приветствуется.
В конце
мне больше всего понравилось решение Фила, потому что я не хотел менять свой локальный файл hosts и использовать директиву ServerName. Было бы хорошо в производственной среде, если бы у вас было отдельное доменное имя для каждого приложения, но не для разработки.
В дополнение к этому, у меня была проблема 403 запрещенных при использовании альтернативного каталога для обслуживания веб-контента. Как я уже сказал, перма казались правильными, проблема была в SE_Linux, а контекст безопасности файлов не был установлен на httpd_sys_content_t. Я публикую это решение, которое я нашел здесь , поскольку оно касается именно этой проблемы. Спасибо.