在子目录中安装 Laravel

Posted

技术标签:

【中文标题】在子目录中安装 Laravel【英文标题】:Installing Laravel in a subdirectory 【发布时间】:2015-01-23 16:56:21 【问题描述】:

我一直在寻找这个问题的答案,但找不到任何有我确切问题的人,并希望其他人也有这个问题。

我使用虚拟主机在本地安装了 Laravel,它安装在根目录下。我现在不得不将此安装移动到位于http://domain.com/~username 的另一台服务器上,我的所有文件都在/~username/ 中,我正在使用.htaccesshttp://domain.com/~username 访问public 文件夹。

我还正确设置了路径并将我的站点 URL 设置为 app.php

除了我的路线之外,几乎所有东西都可以工作。

如果我导航到http://domain.com/~username,我会得到NotFoundHttpException

这是我的主页路线:

Route::get('/', function() ... );

如果我把它改成

Route::get('/~username', function() ... );

它显示了主页。这并不完全理想,而且有点骇人听闻,而且除了主页之外还有很多问题。

我几乎所有的东西都有其他问题,因为 Laravel 认为它安装在根文件夹中,而不是 /~username/

我的问题是我怎样才能让 Laravel 看到它安装到 http://domain.com/~username/ 而不是 http://domain.com/

编辑:添加 .htaccess 文件

我当前在根目录下的 .htaccess 文件(/~用户名)

<IfModule mod_rewrite.c>

    RewriteEngine on
    RewriteBase /~username/

    RewriteCond %THE_REQUEST ^GET\ /public/ [NC]
    RewriteRule ^public/(.*)$ $1 [L,R=301,NE]

    RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

</IfModule>

和 /public 中的 .htaccess 文件

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On    
    RewriteBase /~username/

    RewriteCond %REQUEST_FILENAME !-d
    RewriteCond %REQUEST_FILENAME !-f
    RewriteRule . index.php [L]
</IfModule>

【问题讨论】:

您的网站使用什么网络服务器? Apache/2.2.22 (Debian) 对不起,我删除了我的答案,因为我看到你的问题在路径中包含~username 所以最后,您是希望在 url 中使用您的用户名,还是只是想确保当您转到 http://domain.com/ 时,您会被带到 ~/username/projectname/ 中的公共文件夹文件夹? Blergh,我对 .htaccess 自定义不够精通,无法在这方面提供很多帮助。我认为您在正确的轨道上将 htaccess 重定向到您的用户文件夹的公用文件夹,然后在服务器命中公用文件夹后尝试将用户名包含在路径中,但我不确定如何建议修复它。您可以尝试探索像 htacces-s-redirect.net 这样的 htaccess 重定向生成器站点。请务必保留原始 htaccess 文件的备份,以便在需要时回滚。希望这里的其他人能够给您一个好的答案。 【参考方案1】:

我可能没有正确理解您的问题,但这是我的解决方案。

转到 /bootstrap/paths.php 并更改为:

return array(
    'app' => __DIR__.'~username/../app',
    'public' => __DIR__.'~username/../public',
    'base' => __DIR__.'~username/..',
    'storage' => __DIR__.'~username/../app/storage',
)

我不确定这是否可行。我没试过。

【讨论】:

以上是关于在子目录中安装 Laravel的主要内容,如果未能解决你的问题,请参考以下文章

在 XAMPP Linux 中安装 Laravel 5.3

如何在共享主机的子文件夹中安装 laravel 应用程序?

laravel5.5

无法在 laravel 5.3 的 mac 上创建缓存目录

Laravel 5.2 路由仅适用于根目录

sh 此脚本在子目录中安装WordPress