我的laravel 5应用程序使用官方身份验证框架。在我的家园/流浪者环境中,一切运行良好但是当我尝试部署到生产服务器时,auth功能不起作用 - 例如,如果我尝试注册一个新用户,表单会重定向到自己并且不会#39; t在users表中创建条目。
Homestead vagrant正在运行nginx,而生产服务器正在运行Apache 2.4.6(我无法控制的东西)。 mod_rewrite已启用,public / .htaccess如下:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
我检查了laravel和apache日志,没有记录任何错误。
Apache虚拟主机配置
<VirtualHost *:80>
ServerName example.com
## Vhost docroot
DocumentRoot "/var/www/app/public"
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
## Logging
ErrorLog "/var/log/httpd/laravel_error.log"
ServerSignature Off
CustomLog "/var/log/httpd/laravel_access.log" combined
</VirtualHost>
更新: 来自 php artisan route:list 的路线列表的相关部分是:
| | POST | login | | App\Http\Controllers\Auth\AuthController@login | web,guest |
| | GET|HEAD | login | | App\Http\Controllers\Auth\AuthController@showLoginForm | web,guest |
| | GET|HEAD | logout | | App\Http\Controllers\Auth\AuthController@logout | web |
| | POST | password/email | | App\Http\Controllers\Auth\PasswordController@sendResetLinkEmail | web,guest |
| | POST | password/reset | | App\Http\Controllers\Auth\PasswordController@reset | web,guest |
| | GET|HEAD | password/reset/{token?} | | App\Http\Controllers\Auth\PasswordController@showResetForm | web,guest |
| | POST | register | | App\Http\Controllers\Auth\AuthController@register | web,guest |
| | GET|HEAD | register | | App\Http\Controllers\Auth\AuthController@showRegistrationForm | web,guest |
并且 routes.php 文件中的相关部分如下所示:
Route::group(['middleware' => ['web']], function () {
Route::auth();
...
}
答案 0 :(得分:1)
尝试将.htaccess
文件更新到最新版本(如下)。可能是URL中的尾部斜杠导致第二次重定向。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
答案 1 :(得分:0)
好的,设法解决了 - 我会在这里分享答案。
该网站正在运行https,我终于意识到注册表单试图将详细信息传递给导致问题的http路由。
我修改了auth表单以通过https发布表单并且所有工作都已完成。