繁体   English   中英

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

[英]Laravel-Localization Deployment - The requested URL /en was not found on this server

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

未找到

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

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

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

当我更改时(在 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:这是我当前的文件夹结构:
- /家/用户名
-- 大多数我的文件
-- 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']);

    });

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

注意:我还托管另一个站点。 这就是为什么我将公共文件放在一个具有 URL 名称的文件夹中。

知道问题可能是什么吗?

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

我有同样的问题。

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

我在我的“public_html/.htacces”选项中添加了这段代码 -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}]

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

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

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

php artisan route:trans:cache

代替

php artisan route:cache

有关更多信息,请参阅文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM