Php 动态虚拟主机与Laravel产生500错误

Php 动态虚拟主机与Laravel产生500错误,php,laravel-5,xampp,virtualhost,virtual-hosts,Php,Laravel 5,Xampp,Virtualhost,Virtual Hosts,我正在尝试用虚拟主机创建一个动态的开发环境。 现在我有: <VirtualHost *:80> UseCanonicalName Off VirtualDocumentRoot "C:\xampp\htdocs\%1\public" # available aliases to use ServerAlias *.dev </VirtualHost> 但是任何其他的路由都会给我一个500到许多内部重定向的错误。 我使用Laravel5.2,除了r

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

<VirtualHost *:80>
   UseCanonicalName Off
   VirtualDocumentRoot "C:\xampp\htdocs\%1\public"
   # available aliases to use
   ServerAlias *.dev
</VirtualHost>
但是任何其他的路由都会给我一个500到许多内部重定向的错误。 我使用Laravel5.2,除了routes.php和一些默认更改之外,没有任何更改

当我将这样的域指定为VirtualHost时,它运行得很好:

<VirtualHost *:80>
  ServerName example.dev
  VirtualDocumentRoot none
  DocumentRoot "C:\xampp\htdocs\example\public"
</VirtualHost>
页面加载正确,但这不是我想要的。 那么如何从url中删除index.php呢?我已检查所有模块是否正确加载这是我的.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>

选项-多视图
重新启动发动机
#如果不是文件夹,则重定向尾部斜杠。。。
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)/$/$1[L,R=301]
##手柄前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
##处理授权标题
RewriteCond%{HTTP:Authorization}。
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
编辑

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


但我仍然不明白为什么它可以在手动添加的vhost上工作,而不能在动态生成的vhost上工作,有人对此有解释吗?

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

也许我们可以帮你。

我猜您的重写模块(mod_rewrite)已禁用。在apache.conf中检查它

也许我们可以帮你。
我也遇到了同样的问题。我找到了解决办法

转到根目录下的.htaccess文件,如果它不在根目录下,那么它将在从那里剪切的公用文件夹中可用,并粘贴到根目录中

更改以下代码

重写规则^index.php[L]

重写规则^(.*)$/index.php/$1[L]


我也有同样的问题。我找到了解决办法

转到根目录下的.htaccess文件,如果它不在根目录下,那么它将在从那里剪切的公用文件夹中可用,并粘贴到根目录中

更改以下代码

重写规则^index.php[L]

重写规则^(.*)$/index.php/$1[L]


查看此指南行我将其用于laravel感谢您的评论,但您正在使用VirtualHost,将每个“项目”添加到vhost中。这一部分在我这方面确实有效,但我不喜欢手动添加它们,因为要添加的内容太多了。因此,我希望每个目录(例如“example”)都指向“example.dev”。这部分不起作用,jetcheck这条指南我将其用于laravel谢谢您的评论,但您正在使用VirtualHost,将每个“项目”添加到vhost中。这一部分在我这方面确实有效,但我不喜欢手动添加它们,因为要添加的内容太多了。因此,我希望每个目录(例如“example”)都引用“example.dev”,这部分在jetThanks中不起作用,但这会给我一个404/403而不是500错误谢谢,但这会给我一个404/403而不是500错误
http://example.dev/index.php/test
<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>