我已经开发了使用laravel并从Angular 4调用它们的rest api。当我使用“ php artisan serve”运行laravel时,它在本地系统上都可以正常工作。但是,当我以相同的方式将其托管在AWS EC2实例上并且调用api时,它将给我404错误。
我将所有代码都放在/ var / www / html中,并像http://domain/api/report一样访问了它,但仍然给了我404。但是当我像http://domain/public/index.php这样访问公用文件夹时,它的工作正常。
请帮助我。
谢谢!
答案 0 :(得分:1)
请在/etc/apache2/sites-available/00-default.conf
此文件中更改您的文档目录路径
您还检查您的重写模块是否打开。
sudo a2enmod rewrite
var/www/html
到
var/www/html/public
重启服务器后
service apache2 restart
答案 1 :(得分:1)
因此您需要进行2次更改。
首先将您的应用程序域指向公用文件夹,因此步骤将是:
使用sudo a2enmod rewrite
启用重写模块
b。更改apache conf文件中的AllowOverride:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
c。将路径从var/www/html
更新为var/www/html/public
如果您对默认文件进行了一些更改(您可以在项目的公共目录中找到此文件),则使用.htaccess文件从您的网址中删除index.php。
答案 2 :(得分:0)
您的api似乎不在公共磁盘中。
要进行链接,只需在public / api和api之间创建符号链接
答案 3 :(得分:0)
要将laravel上传到服务器,必须将所有laravel目录上传到var svg = jQuery('#graphUnits').html();
var rawSVG = svg.split("<div")[0];
canvg(document.getElementById('graph_units_can'),rawSVG);
html2canvas($("#graph_units_can"), {
onrendered: function(canvas) {
var imgData = canvas.toDataURL('image/png');
console.log(imgData);
linkUnits.href = imgData;
var url = linkUnits.href.replace(/^data:image\/[^;]/, 'data:application/octet-stream');
}
});
中
和var/www
laravel这样做是出于安全考虑,因此没有人可以访问html
之类的配置文件或任何其他使其更安全的PHP文件
所以您的.env
的输出就像
var/www
以此类推
然后您的var/www/app
var/www/bootstrap
var/www/config
的输出就像
html
以此类推
然后您的应用程序将运行良好
如果您遇到无法访问路线的问题,则必须在html/js
html/css
html/index.php
文件中进行一些重写,以便观看视频教程rewrite configuration laravel