在子目录中安装 Laravel
Posted
技术标签:
【中文标题】在子目录中安装 Laravel【英文标题】:Installing Laravel in a subdirectory 【发布时间】:2015-01-23 16:56:21 【问题描述】:我一直在寻找这个问题的答案,但找不到任何有我确切问题的人,并希望其他人也有这个问题。
我使用虚拟主机在本地安装了 Laravel,它安装在根目录下。我现在不得不将此安装移动到位于http://domain.com/~username
的另一台服务器上,我的所有文件都在/~username/
中,我正在使用.htaccess
从http://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的主要内容,如果未能解决你的问题,请参考以下文章