动态虚拟主机使用 Laravel 给出 500 错误
Posted
技术标签:
【中文标题】动态虚拟主机使用 Laravel 给出 500 错误【英文标题】:Dynamic Virtual Host gives 500 error with Laravel 【发布时间】:2016-08-12 09:08:46 【问题描述】:我正在尝试使用虚拟主机创建一个动态开发环境。 现在我有:
<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 错误。 我使用 Laravel 5.2,除了 routes.php 和一些默认更改之外,没有任何更改。
当我将这样的域分配为 VirtualHost 时,一切正常:
<VirtualHost *:80>
ServerName example.dev
VirtualDocumentRoot none
DocumentRoot "C:\xampp\htdocs\example\public"
</VirtualHost>
如何解决这个问题,以便我可以使用动态域名,这样我就不必手动添加所有域。
提前谢谢你, 斯蒂芬·弗兰森
编辑
当我使用这个时:
http://example.dev/index.php/test
页面加载正确,但这不是我想要的。 那么如何从 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>
编辑
发现当我把RewriteRule ^ index.php [L]
改成RewriteRule ^(.*)$ /index.php/$1 [L]
时
但我仍然不明白为什么它在手动添加的虚拟主机上有效,但在动态生成的虚拟主机上无效,有人对此有解释吗?
【问题讨论】:
检查这个指南我将它用于 laravel ***.com/questions/27754367/… 感谢您的评论,但您通过将每个“项目”添加到虚拟主机来使用 VirtualHost。那部分确实对我有用,但我不喜欢手动添加它们,因为要添加的东西太多了。因此,我希望每个目录(例如“example”)都引用“example.dev”,这部分不起作用jet 【参考方案1】:我遇到了同样的问题。我找到了解决办法。
如果.htaccess文件不在根目录中,则转到根目录上的文件,然后它将在从那里剪切并粘贴到根目录中的公共文件夹中可用
更改以下代码。
重写规则 ^ index.php [L]
到
重写规则 ^(.*)$ /index.php/$1 [L]
【讨论】:
【参考方案2】:我猜你重写模块(mod_rewrite)被禁用了。在 apache.conf 中检查它
也许漂亮的 URL 部分可以帮助你。 https://laravel.com/docs/5.1
【讨论】:
谢谢,但这会给我一个 404/403 而不是 500 错误以上是关于动态虚拟主机使用 Laravel 给出 500 错误的主要内容,如果未能解决你的问题,请参考以下文章
axios 向 laravel 发布请求,给出 500 错误
部署在 CodePipeline 中的 Laravel Elastic Beanstalk 应用程序给出 500 SERVER ERROR