【问题标题】:Laravel-Localization Deployment - The requested URL /en was not found on this serverLaravel 本地化部署 - 在此服务器上找不到请求的 URL /en
【发布时间】:2017-12-19 16:33:59
【问题描述】:

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

找不到

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

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

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

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

'hideDefaultLocaleInURL' => false,

从假到真

'hideDefaultLocaleInURL' => true,

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

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

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

...

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

注意:1 在我的本地主机上一切正常。部署似乎有问题。

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

注意 3: 这是我当前的文件夹结构:
- /home/用户名
-- mostOfMyFiles
-- public_html
--- nameOfUrl
---- 公共文件

注 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']);

    });

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

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

知道可能是什么问题吗?

我感谢所有想法、cmets 和批评。 :)

【问题讨论】:

  • 您确定要更改index.php 文件吗?我不认为这是一个好主意。 config 文件或 .env 文件中通常有一些变量需要更改
  • 好问题@xperator。这实际上是我第一次部署 Laravel 站点。所以,我不太确定。我正在关注本教程:youtube.com/watch?v=6g8G3YQtQt4 - 建议按照我的方式更改 index.php 文件。
  • 你知道我想到的第一件事就是为你的所有路线添加一个前缀。我的意思是,如果您的 Laravel 位于自定义路径中,通常会出现这种情况。这是我发现的一个关于本地化的链接,但不确定它是否相关 laracasts.com/discuss/channels/laravel/l5-localisation-routing
  • 我有点困惑,因为在您的注释 2 中您说您正在尝试提供 mysite.com/en URL。我以为你想在一个子目录下提供它,比如mysite.com/my-laravel-app/en。如果你在 public_html 内的子目录中有 Laravel,并且你想用你的根路径提供它,那么你所要做的就是配置你的 Web 服务器并告诉它使用 /public_html/my-laravel-app 作为根路径。跨度>
  • 你现在在 index.php 文件中所做的更改是为了当你想从子目录中服务 Laravel 时,当你在浏览器中输入 mysite.com/my-app 时,Laravel 就会运行。不应该让 Laravel 从mysite.com运行

标签: php laravel laravel-localization


【解决方案1】:

我有同样的问题。

经过深入研究,我找到了适合我的解决方案。 我对 laravel 部署也有点菜鸟,我不知道为什么在共享主机上部署 laravel 项目会出现这样的问题,实际上有上千种方法,每次有人说这不是正确的方法,所以我甚至不知道什么是真正正确的方法。

我在我的“public_html/.htacces”中添加了这段代码 选项 - 多视图

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

【讨论】:

    【解决方案2】:

    如果有人在寻找,就我而言,是 route:cache 导致了“未找到”异常。我完全忘记了,默认情况下你不能在 LaravelLocalization 中使用 route:cache

    【讨论】:

      【解决方案3】:

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

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

      php artisan route:trans:cache
      

      而不是

      php artisan route:cache
      

      请参阅docs 了解更多信息。

      【讨论】:

        猜你喜欢
        • 2019-03-01
        • 2017-12-26
        • 2015-03-30
        • 2016-11-23
        • 2016-02-25
        • 1970-01-01
        • 2015-12-17
        • 2016-12-21
        • 2015-03-31
        相关资源
        最近更新 更多