我在Vagrant VM中安装了流明(ubunty / trusty64)。在我的Vagrantfile中启用了config.vm.network "private_network", ip: "192.168.33.10"
我在VM中的目录结构是
var
- www
-html
-app
-bootstrap
-database
.... so on.
我在VM /etc/apache2/sites-available/api.dukaan.pk
内创建了一个虚拟主机,内容低于
<VirtualHost *:80>
ServerAdmin admin@api.dukaan.pk
ServerName api.dukaan.pk
ServerAlias www.api.dukaan.pk
DocumentRoot /var/www/html/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
然后我用sudo a2ensite api.dukaan.pk.conf
启用了它。几次重启阿帕奇没有运气。
然后在我的主机Windows 10中我放了192.168.33.10 api.dukaan.pk
现在在我的app / Http / routes.php中我定义了两条路线
$app->get('/', function () use ($app) {
return $app->welcome();
});
$app->get('/hello', function() {
return 'Hello World';
});
如果我转到http://api.dukaan.pk/index.php/hello
它可以正常工作,但是如果我从这个网址中移除index.ph,例如http://api.dukaan.pk/hello
,则会显示404找不到网页错误。
我的app/public
目录中有默认的.htaccess和index.php文件。
请帮我摆脱这个index.php文件
由于
答案 0 :(得分:1)
在VM中运行的apache实例中,您定义的VHost在端口80
中运行。您需要能够从主机(Windows)访问guest虚拟机(ubuntu)中运行的此端口80
。
在您的Vagrantfile
中,您可以定义端口转发来执行此操作。按照规定here:
config.vm.network :forwarded_port, guest: 80, host: 80, auto_correct: true
如果端口80
已被另一个进程/服务器/任何东西用在您的主机(窗口)中,您可以为主机设置除80
之外的另一个端口,如:
config.vm.network :forwarded_port, guest: 80, host: 8080, auto_correct: true
答案 1 :(得分:0)
这个解决方案对我有用。我在AllowOverride All
文件中添加了api.dukaan.pk.conf
标记,如下所示
<VirtualHost *:80>
ServerAdmin admin@api.dukaan.pk
ServerName api.dukaan.pk
ServerAlias www.api.dukaan.pk
DocumentRoot /var/www/html/public
<Directory /var/www/html/public>
AllowOverride All
</Directive>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
以下是根据 @tezla 评论
对此更改的解释基于文档当此指令设置为All时,则为any .htaccess中允许使用.htaccess Context的指令 文件。
答案 2 :(得分:0)
如果你想在子目录中运行流明,请使用别名,这种方法对我有用,希望它能帮助其他人。
在启用了站点的目录中启用了任何文件的Apache配置文件中
在DocumentRoot / var / www / html /
之后添加Alias /api "/var/www/html/<directoryname>/public"
通知没有尾部斜杠
和,
<Directory /var/www/html/<directoryname>/public>
AllowOverride All
</Directory>
和休息是这样的。这应该可以完成工作。