Laravel 重定向到一个路由,但是 apache 给出 404 错误

Posted

技术标签:

【中文标题】Laravel 重定向到一个路由,但是 apache 给出 404 错误【英文标题】:Laravel redirects to a route but then apache gives 404 error 【发布时间】:2014-05-10 13:35:28 【问题描述】:

我有一个网站在不同的 url (staging) 中的同一台服务器上运行,但现在我已经部署了该网站,并且基本 url ("/") 被重定向到登录 url (所以 laravel 是排序的工作),但后来我从 apache 收到 404 错误。

如果我使用 sub.domain.com/index.php/route,它可以工作,但如果我使用 sub.domain.com/route 会重定向到登录路由并给出 404 错误。

我还更改了 routes.php 以在路由“/”中返回登录视图,并正确显示登录表单。

【问题讨论】:

【参考方案1】:

添加后

AllowOverride All

到虚拟主机配置,让它工作。可能默认配置不允许重定向?

这是我的最终(和工作)虚拟主机配置:

DocumentRoot /var/www/sitefolder/public
 ServerName site.domain.com
 <Directory /var/www/sitefolder/public>
  AllowOverride All
  allow from all
  Options +Indexes
</Directory>

【讨论】:

是的。这里发生的事情是 /public/ 中有一个 .htaccess 可以修复 url 以隐藏 index.php。但是,要运行它,它需要 AllowOverride All,因为 .htaccess 是关于发出未在 /etc/apache(或您的发行版放置的任何地方)配置集群中指定的进一步 apache 服务器配置【参考方案2】:

问题可能来自您的 Apache 服务器中的一个名为 rewrite 模块的模块。 在 Windows 中,您可以从 httpd.conf 中取消注释这一行

#LoadModule rewrite_module modules/mod_rewrite.so

我正在运行 Ubuntu 14.04 并使用

启用它

sudo a2enmod rewrite

重启 Apache 试试这些。 它也可能对你有用。

【讨论】:

Tnx 很多朋友。你是最棒的:* 刚刚救了我,虽然我遇到了一些错误,但我的问题都解决了,谢谢【参考方案3】:

VirtualHost

仅将这些行添加到您的 apache 的 httpd.conf 中:

<Directory /var/www/sitefolder/public>
  AllowOverride All
  allow from all
  Options +Indexes
</Directory>

或者您可以将第一行替换为:

<Directory />

如果一切都不起作用,您可以尝试:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

【讨论】:

以上是关于Laravel 重定向到一个路由,但是 apache 给出 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 路由组导致重定向循环

如何使用获取参数将 laravel (5.3) 路由重定向到其他路由

如何在 Laravel 4 中将一个路由重定向到 HTTPS,将所有其他路由重定向到 HTTP?

重定向到 laravel 中的路由结果“HTTP 500 错误”

重定向进入空白页面而不重定向到路由 Laravel 5.8

如果路由不在子域中,Laravel 子域路由重定向到 404