Laravel-Localization部署 - 在此服务器上找不到请求的URL / en

时间:2017-07-14 14:20:32

标签: php laravel laravel-localization

我正在使用laravel-localization部署我的第一个laravel应用程序。不幸的是,我目前收到错误,

  

未找到

     

在此服务器上找不到请求的URL / en。

     

此外,尝试时遇到404 Not Found错误   使用ErrorDocument来处理请求。

我在网上搜索试图找到其他有同样问题的人,看看他们是否有可行的解决方案。我发现至少one,但看起来他也无法解决它。我也找到了这个解决方案here,但这两个想法似乎都没有用。

当我改变时(在config / laravellocalization.php文件中)

'hideDefaultLocaleInURL' => false,

从False到True

'hideDefaultLocaleInURL' => true,

我可以看到主页,但仅限于此。所有其他页面都被重定向到404错误。

我还更改了index.php文件以反映我的文件夹结构,因为此站点的公用文件夹位于public_html文件夹中的文件夹中:

require __DIR__.'/../../myapp/bootstrap/autoload.php';

...

$app = require_once __DIR__.'/../../myapp/bootstrap/app.php';

注意:1 一切都在我的localhost上运行。部署中似乎存在问题。

注2:由于目前已配置,该网站会自动尝试加载www.mysite.com/en版本,这让我觉得我对index.php文件的更改是正确的。如果没有这些更改,我会收到页面无法加载的错误。

注3:这是我当前的文件夹结构:
- / home / username
- mostOfMyFiles
- public_html
--- nameOfUrl
---- publicFiles

注4:关于路由,这是我目前在web.php文件中的内容:

<?php

    Route::group([
        'prefix' => LaravelLocalization::setLocale(),
        'middleware' => [ 'localeSessionRedirect', 'localizationRedirect' ]
        ], function()
    {
        Route::get('/', function()
        {
            return View::make('welcome');
        });

        Route::get(LaravelLocalization::transRoute('routes.about'), function() {
            return View::make('about');
        });

        Route::get(LaravelLocalization::transRoute('routes.contact', 'ContactController@getContact'), function() {
            return View::make('contact');
        });

        Route::post(LaravelLocalization::transRoute('routes.contact'),
            ['as' => 'contact', 'uses' => 'ContactController@sendMail']);

    });

我尝试添加“网络”#39;中间件到组,如here所示,但这也没有解决问题。 :(

注意:我还托管另一个网站。这就是我在具有URL名称的文件夹中拥有公共文件的原因。

知道问题可能是什么?

我感谢所有想法,评论和批评。 :)

3 个答案:

答案 0 :(得分:2)

我有同样的问题。

经过深入研究后,我发现解决方案对我有用。 我也有点laob以及laravel部署,我不知道为什么在共享主机上部署laravel项目这是一个问题,有几千种方式,每次有人说这不是正确的方式,所以我甚至不知道什么是正确的方式。

我在&#34; public_html / .htacces&#34; 中添加了这段代码                       选项-MultiViews     

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}]

答案 1 :(得分:1)

如果某人正在查看,我的情况是route:cache导致“未找到”例外。我完全忘记了,默认情况下你不能将route:cache与LaravelLocalization一起使用。

答案 2 :(得分:0)

  

一切都在我的本地主机上进行。部署中似乎有问题。

您是否在部署中自动使用缓存?对于LaravelLocalization,您需要使用

php artisan route:trans:cache

代替

php artisan route:cache

有关更多信息,请参见docs