如果没有index.php,流明路线无法正常工作

时间:2015-11-26 13:32:07

标签: php apache vagrant laravel-5.1 lumen

我在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文件

由于

3 个答案:

答案 0 :(得分:1)

在VM中运行的apache实例中,您定义的VHost在端口80中运行。您需要能够从主机(Windows)访问guest虚拟机(ubuntu)中运行的此端口80

在您的Vagrantfile中,您可以定义端口转发来执行此操作。按照规定here

将此行添加到您的Vagrant文​​件中
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>

和休息是这样的。这应该可以完成工作。