Laravel 5.6 '/' 找到路由但未找到其他路由 AWS EC2

Posted

技术标签:

【中文标题】Laravel 5.6 \'/\' 找到路由但未找到其他路由 AWS EC2【英文标题】:Laravel 5.6 '/' route found but other routes not found AWS EC2Laravel 5.6 '/' 找到路由但未找到其他路由 AWS EC2 【发布时间】:2019-07-18 21:22:00 【问题描述】:

我是 laravel 和 AWS 的新手。我正在尝试在 AWS EC2 apache 服务器上运行我的应用程序。我的应用程序在本地系统中运行良好,但是一旦我尝试在 AWS 上上传代码,只有索引路由(即“/”)运行良好。对于其他路线,它给了我 NOT FOUND 错误。如果我尝试运行 application /index.php/login 它正在加载一个页面,但 js 和 css 不可用。

000-default.conf 文件中的代码

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public

/etc/apache2/apache2.conf 文件中的代码

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

我的应用程序的根目录中没有 .httacess,我在更改后重新启动了 apache 服务器。请指导我缺少什么。

提前谢谢你。

【问题讨论】:

您是否尝试将 在 /etc/apache2/sites-available/000-default.conf 文件中是的 将 .htaccess 从您的公用文件夹复制到根目录,然后告诉我发生了什么。它应该工作 我在公用文件夹中没有 htaccess。在我的 aws 服务器中存在 htaccess /home/ubuntu/.composer/.htaccess /home/ubuntu/.composer/cache/.htaccess /var /www/html/vendor/phenx/php-font-lib/.htaccess 你试过sudo a2enmod rewrite并重启apache吗? 【参考方案1】:

httpd 我也有同样的问题,但我通过添加.htaccess 来解决它。

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

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %HTTP:Authorization .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%HTTP:Authorization]

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

    # Send Requests To Front Controller...
    RewriteCond %REQUEST_FILENAME !-d
    RewriteCond %REQUEST_FILENAME !-f
    RewriteRule ^ index.php [L]
</IfModule>

注意在public/目录下添加.htaccess

【讨论】:

【参考方案2】:

看来您需要设置虚拟主机配置。使用sudo nano /etc/apache2/sites-available/000-default.conf 命令(或您使用的任何文本编辑器)打开您的默认配置文件并将默认配置替换为以下内容

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName example.com
    DocumentRoot /var/www/html/public

    <Directory "/var/www/html/public">
            Options +FollowSymLinks
            ReWriteEngine On
            Require all granted
    </Directory>

    ErrorLog $APACHE_LOG_DIR/error.log
    CustomLog $APACHE_LOG_DIR/access.log combined
</VirtualHost>

【讨论】:

我将你的代码复制粘贴到 000-default.conf 文件中并重启 apache 但仍然无法正常工作 @urvisha 如果有任何有用的解释,你能检查一下你的 apache 日志吗 (/var/log/apache2/error.log) Tingir 抱歉耽搁了。以下错误在 apache 错误日志 [mpm_prefork:notice] [pid 16031] AH00163: Apache/2.4.18 (Ubuntu) 已配置 -- 恢复正常操作 [core:notice] [pid 16031] AH00094: Command line: '/usr/ sbin/apache2' [mpm_prefork:notice] [pid 16031] AH00169: 捕获 SIGTERM,正在关闭

以上是关于Laravel 5.6 '/' 找到路由但未找到其他路由 AWS EC2的主要内容,如果未能解决你的问题,请参考以下文章

SonataAdmin 子管理路由在调试中可见但未找到

Laravel 5.6 - 在控制器中按名称获取路由

未找到 Laravel 注册索引并创建错误

Laravel 5.6和Eloquent将子模型持久化到数据库中,无法从模型中找到hasMany或belongsTo方法

Laravel 5.6 artisan 命令从 URI 获取路由

未找到 Laravel 路由,默认根路由除外