Laravel在Shared Hosting中的路由不能正常工作

问题描述:

我遇到的问题与this another question非常相似,但该线程提供的解决方案对我没有帮助。Laravel在Shared Hosting中的路由不能正常工作

我用这个guide(顺便说一句,导游是非常相似的链接问题的one of the answers

下面是我的路线/ web.php文件

让我Laravel应用程序部署到一个共享的托管服务
<?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', '[email protected]')->name('home'); 

Route::group(['prefix' => 'law', 'middleware' => ['ability:superadministrator,read-users|create-users']], function() { 

    Route::get('/search', '[email protected]'); 
    Route::get('/new', ['middleware' => ['permission:create-users'], 'uses' => '[email protected]']); 

    Route::get('/find', '[email protected]'); 
    Route::get('/edit/{id}', '[email protected]'); 

    //region post 
    Route::post('/new', ['middleware' => ['permission:create-users'], 'uses' => '[email protected]']); 
    Route::post('/search', ['middleware' => ['permission:read-users'], 'uses' => '[email protected]']); 
    /*Route::post('/modify', ['middleware' => ['permission:create-users'], 'uses' => '[email protected]']);*/ 
    //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/sea​​rch)都会让我在某种无限循环中再次进入主页。注销路线也工作正常。

奇怪的是,如果我尝试像mydomain.net/blah这样不存在的路由,我会去Laravel Framework的知识RouteNotFound /“NotFoundHttpException”。

我在php日志或浏览器控制台中没有收到任何错误。 JavaScript工作正常。

我联系主机服务的支持,以确保Apache有mod_rewrite启用,显然它是。

我在网上搜索了大约3个小时,并在这里深入挖掘,但任何事情都帮助我理解了这个问题。任何提示?

下面是.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> 

MISC:

+1

是mod_rewrite的开启? – ggdx

+0

根据支持人员,是的,但我不能确保从我的系统 – James

+0

'composer dump-autoload'的视图部署之前? – ggdx

在.htaccess文件

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php/$1 [L] 

添加这此规则将REQUEST_URI的内部负载的内容在index.php

+0

我没有任何效果,但无论如何感谢。 – James