在一个子目录中安装Laravel

时间:2014-11-25 15:42:21

标签: php apache .htaccess laravel routes

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

我使用vhost在本地安装了Laravel,它安装在根目录下。我现在必须将此安装移至http://domain.com/~username的其他服务器,我的所有文件都在/~username/,我正在使用.htaccesspublic文件夹访问http://domain.com/~username {1}}。

我还在app.php中正确设置了路径和我的网站网址。

除了我的路线,一切几乎都有效。

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

这是我的主页路线:

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

如果我将其更改为

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

它显示了我的主页。这不是一个理想的hacky,还有比主页更多的问题。

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

我的问题是如何让Laravel看到它已安装到http://domain.com/~username/而不是http://domain.com/

编辑:添加.htaccess文件

我在root(/ ~username)

中的当前.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>

1 个答案:

答案 0 :(得分:1)

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

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

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

我不确定这是否有效。我还没试过。