【问题标题】:Laravel 5.1 | Post requests don't work without the "/public" in the URLLaravel 5.1 |如果 URL 中没有“/public”,则发布请求不起作用
【发布时间】:2015-08-17 04:46:47
【问题描述】:

正如标题所说,

在 Laravel 5.1

中,如果 URL 中没有“/public”,则发布请求不起作用

例如,在登录表单中,如果action url是

/auth/login

它不起作用并在提交后再次将我重定向到登录页面,但是如果我将操作 url 更改为

/public/auth/login

它工作正常。 其他形式也一样。

这是我位于 laravel 根文件夹中的 .htaccess 文件

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

这是位于公共文件夹中的 .htaccess 文件

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

顺便说一句,该应用程序是在 Godaddy 共享主机帐户上发布的。 本地服务器不存在此问题(wamp)

如何解决这个问题? 提前致谢。

【问题讨论】:

  • 您使用什么来服务您的应用程序? (Apache,nginx,./artisan serve。我敢打赌,您没有将public 添加到虚拟主机的末尾。另外,为什么将server.php 更改为index.php?
  • 该应用发布在 Godaddy 共享主机帐户上。看了一篇文章说需要将server.php文件重命名为index.php。无论如何,我将其重命名为 server.php

标签: .htaccess laravel post request


【解决方案1】:

问题是因为使用了url()方法。

例如在 login.blade.php 文件中 => 登录表单 当我改变这个

action="{{url('auth/login')}}"

到这里

action="{{action('Auth\AuthController@postLogin')}}"

并将登录动作的路由名称改为

/login 

而不是

/auth/login

成功了。 我怀疑原因可能是表单提交到的 url 与包含表单的当前页面的 url 相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-06
    • 2015-11-13
    • 2019-01-27
    • 2021-06-18
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    相关资源
    最近更新 更多