使用 Laravel 路由获取 404 - 重写不起作用

Posted

技术标签:

【中文标题】使用 Laravel 路由获取 404 - 重写不起作用【英文标题】:Getting 404 by using Laravel routes - rewrite not working 【发布时间】:2019-04-21 05:39:54 【问题描述】:

我正在使用 Laravel-5 框架,并在 routes/web.php 中创建了以下路由:

Route::get('/test', function () 
    return view('test');
);

导航到myapp.dev/test 后,我收到错误 404:

找不到对象!在此服务器上找不到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。

导航到myapp.dev/index.php/test 工作正常。所以,看起来 rewrite_mod 不起作用。

我正在使用 XAMP/Apache 并且在 httpd.conf 中启用了 rewrite_module:

LoadModule rewrite_module modules/mod_rewrite.so

我的 larvavel 的公用文件夹包含一个 .htaccess 文件,其内容如下:

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

    RewriteEngine On
    #DirectoryIndex index.php

    # 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]

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

httpd-vhost 配置如下所示:

<VirtualHost *:80>
    ServerAdmin my@mail.com
    DocumentRoot "s:/_dev/myapp/public"
    ServerName myapp.dev
    <Directory "s:/_dev/myapp/public">
        Allow from all
        Require all granted
        #Options Indexes        
    </Directory>    
    ErrorLog "logs/myapp.dev-error.log"
    CustomLog "logs/myapp.dev-access.log" common
</VirtualHost>

有什么我错过的想法吗?

谢谢

【问题讨论】:

你重启了apache吗?另见:***.com/questions/869092/… 是的,我重新启动了服务器。不幸的是,我没有在您的链接帖子中找到解决方案。 将项目迁移到 vagrant/Laravel homestead 可能是一种更短的方法。你会更轻松地工作! 感谢您的提示。听起来很酷。我会看看的。但是,如果有人对我的问题有解决方案,那就太好了:) 因为我以后可能会在生产服务器端遇到这样的问题。 您是否尝试在 httpd-vhost 配置中将 AllowOverride All 添加到 &lt;Directory "s:/_dev/myapp/public"&gt; 中?不要忘记重新启动服务器。 【参考方案1】:

我看不到我们的代码有任何问题,但这可能是浏览器问题。

查看这篇文章,了解导致 .dev 域出现问题的浏览器更改。

https://medium.engineering/use-a-dev-domain-not-anymore-95219778e6fd

【讨论】:

感谢您的反馈。非常有趣的文章。但不幸的是,这似乎不是我的问题(还不是;))。阅读本文后,我尝试使用完全任意的 gTLD。我还在几个浏览器中尝试过,包括 Chrome、Firefox、IE、Vivaldi (Chromium)。同样的问题。

以上是关于使用 Laravel 路由获取 404 - 重写不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 自定义路由在使用资源时返回 404

带有通配符的 Laravel 路由总是 404

Laravel路由不生效,除了首页全部404解决方案Nginx环境

Laravel 路由中的 IP 地址显示 404

使用 Laravel 路由时找不到 404 错误

Laravel Ajax 路由问题(404 响应)