动态虚拟主机在Laravel中出现500错误

时间:2016-04-19 23:14:52

标签: php laravel-5 xampp virtualhost virtual-hosts

我试图用虚拟主机创建一个动态的开发环境。 现在我有:

<VirtualHost *:80>
   UseCanonicalName Off
   VirtualDocumentRoot "C:\xampp\htdocs\%1\public"
   # available aliases to use
   ServerAlias *.dev
</VirtualHost>

它适用于Laravel的默认路线:

Route::get('/', function () {
    return view('home.index');
});

但是任何其他路由都会给我一个500错误的内部重定向。 除了routes.php和一些默认更改之外,我使用Laravel 5.2而不做任何更改。

当我将像这样的域分配为VirtualHost时,它可以正常工作:

<VirtualHost *:80>
  ServerName example.dev
  VirtualDocumentRoot none
  DocumentRoot "C:\xampp\htdocs\example\public"
</VirtualHost>

如何解决此问题,以便我可以使用动态域名,因此我不必手动添加所有域。

提前谢谢你, 斯特凡·弗兰森

修改

当我使用它时:

http://example.dev/index.php/test

页面正确加载,但这不是我想要的。 那么如何从url中删除index.php?我已经检查过,并且al模块已正确加载,这是我的.htaccess:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

#    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

#    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

修改

发现当我将RewriteRule ^ index.php [L]更改为RewriteRule ^(.*)$ /index.php/$1 [L]

但我仍然不明白为什么它可以在手动添加的虚拟主机上运行,​​但不能在动态生成的虚拟主机上运行,​​是否有人对此有解释?

2 个答案:

答案 0 :(得分:0)

我猜你重写模块(mod_rewrite)被禁用了。在apache.conf中查看它

也许部分Pretty URL可以帮到你。 https://laravel.com/docs/5.1

答案 1 :(得分:0)

我遇到了同样的问题。我找到了解决方案。

如果不在根目录中,请转到根目录中的.htaccess文件,然后将其从该目录中剪切的公用文件夹中可用,并粘贴到根目录中

更改以下代码。

RewriteRule ^ index.php [L]

RewriteRule ^(。*)$ /index.php/$1 [L]