首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel-本地化部署-在此服务器上找不到请求的URL /en

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

Stack Overflow用户
提问于 2017-07-14 14:20:31
回答 3查看 2.2K关注 0票数 1

我正在部署我的第一个拉拉应用程序与拉拉本地化。不幸的是,我现在收到了错误,

未找到 在此服务器上找不到请求的URL /en。 此外,在尝试使用ErrorDocument处理请求时遇到了一个404未找到的错误。

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

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

代码语言:javascript
复制
'hideDefaultLocaleInURL' => false,

从假到真

代码语言:javascript
复制
'hideDefaultLocaleInURL' => true,

我可以看到主页,但只有这个。所有其他页面都重定向到404错误。

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

代码语言:javascript
复制
require __DIR__.'/../../myapp/bootstrap/autoload.php';

..。

代码语言:javascript
复制
$app = require_once __DIR__.'/../../myapp/bootstrap/app.php';

注意:1一切都在我的本地主机上工作。在部署方面似乎存在问题。

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

注释3:这里是我当前的文件夹结构:

  • /home/用户名 -- mostOfMyFiles -- public_html - nameOfUrl - publicFiles

注释4:关于路由的,下面是我当前在web.php文件中的内容:

代码语言:javascript
复制
<?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']);

    });

我尝试过将'web‘中间件添加到这个组中,如这里所示,但这也没有解决问题。:(

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

知道有什么问题吗?

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

EN

回答 3

Stack Overflow用户

发布于 2017-11-28 09:57:35

我也有同样的问题。

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

我在“public_html/..htacces”选项-MultiViews中添加了这段代码

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-05-13 23:45:05

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

票数 2
EN

Stack Overflow用户

发布于 2019-10-28 11:32:25

在我的本地主机上一切正常。在部署方面似乎存在问题。

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

代码语言:javascript
复制
php artisan route:trans:cache

而不是

代码语言:javascript
复制
php artisan route:cache

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45105261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档