我在 / home / azureuser 目录中创建了2个laravel应用程序。
我想在单个ubuntu VM上运行多个laravel应用程序。我尝试配置虚拟主机但无法使其正常工作。
以下是 /etc/apache2/sites-enabled/000-default.conf
的内容<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName apitesting.cloudapp.net/demo
DocumentRoot /home/azureuser/demoapp/public
<Directory /home/azureuser/demoapp/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
SetEnv APPLICATION_ENV dev
LogLevel warn
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName apitesting.cloudapp.net/quiz
DocumentRoot /home/azureuser/quizapp/public
<Directory /home/azureuser/quizapp/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
SetEnv APPLICATION_ENV dev
LogLevel warn
</VirtualHost>
不确定上述内容是否正确。
答案 0 :(得分:0)
似乎我们无法使用子路径参数在URL中设置ServerName
。根据您的要求,您可以利用重写模式。
首先,通过命令sudo a2enmod rewrite
安装apache rewrite mod,然后通过sudo service apache2 restart
重新启动apache。
之后,修改配置文件/etc/apache2/sites-enabled/000-default.conf
,将目录配置到应用程序的父文件夹:
...
DocumentRoot /home/azureuser
ServerName apitesting.cloudapp.net
<Directory /home/azureuser>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
...
然后在应用程序的根目录中创建一个名为.htaccess
的文件,将传入的请求重定向到public
文件夹,内容为:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>