【发布时间】: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/enURL。我以为你想在一个子目录下提供它,比如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