【发布时间】:2018-03-24 21:36:51
【问题描述】:
我遇到了与this another question 非常相似的问题,但该线程中提供的解决方案对我没有帮助。
我使用此 guide 将我的 Laravel 应用程序部署到共享托管服务(顺便说一句,该指南与链接问题的 one of the answers 非常相似)
下面是我的路由/web.php 文件
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::group(['prefix' => 'law', 'middleware' => ['ability:superadministrator,read-users|create-users']], function () {
Route::get('/search', 'LawController@showSearchView');
Route::get('/new', ['middleware' => ['permission:create-users'], 'uses' => 'LawController@showNewView']);
Route::get('/find', 'LawController@find');
Route::get('/edit/{id}', 'LawController@edit');
//region post
Route::post('/new', ['middleware' => ['permission:create-users'], 'uses' => 'LawController@store']);
Route::post('/search', ['middleware' => ['permission:read-users'], 'uses' => 'LawController@search']);
/*Route::post('/modify', ['middleware' => ['permission:create-users'], 'uses' => 'LawController@modify']);*/
//endregion
});
Route::group(['prefix' => 'user', 'middleware' => ['ability:superadministrator,read-users|create-users']], function () {
//..similar to the previous one
});
//some other route groups
问题是,我可以访问欢迎页面和登录页面。身份验证后,我转到主页,然后问题就开始了。除了我尝试的所有其他路线(如 mydomain.net/law/search),我都会以某种无限循环再次进入主页。注销路由也可以正常工作。
奇怪的是,如果我尝试像 mydomain.net/blah 这样不存在的路由,我会去 Laravel 框架的知识 RouteNotFound/"NotFoundHttpException"。
我在 php 日志或浏览器控制台中没有收到任何错误。 javascript 工作正常。
我联系了主机服务的支持,以确保 Apache 启用了 mod_rewrite 并且显然是启用了。
我在谷歌上搜索了大约 3 个小时,并在 SO 中深入挖掘,但任何事情都有助于我理解问题。有什么建议吗?
如果有任何帮助,下面是 .htacces 文件:
<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>
杂项:
- PHP 7.1
- Laravel 5.4
- The composer.json供参考
- 我正在使用Laravel AdminLTE,侧边栏菜单也无法正常工作。我认为这是导致这两个问题的同一个问题。
- 我的 .env 文件没有什么特别的,但是here is (part of) it。
【问题讨论】:
-
mod_rewrite 开启了吗?
-
根据支持人员的说法,是的,但从系统的角度来看,我无法确保
-
composer dump-autoload部署之前? -
我在部署后制作了 if。 “部署”是托管目录中的 git clone 和
composer.phar install。我一步一步跟着这个guide -
听起来可能与中间件有关?例如,身份验证/会话不起作用,因此那些需要身份验证的路由会让您退缩。是directory permissions set correctly吗?
标签: php laravel routes shared-hosting