Laravel 4在子文件夹中没有" public"在网址中

时间:2015-01-13 11:58:39

标签: apache .htaccess mod-rewrite laravel-4

我有一个Laravel 4应用程序,它在XAMPP本地运行良好。

我已将其上传到域名 - domain.com - (由godaddy托管)并将其放在 hcr 文件夹中。

hcr / app / config / app.php 我有

'url'=> 'http://domain.com/hcr',

hcr / public / .htaccess 我有

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On  
    RewriteBase /hcr

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

并在 hcr / .htaccess 我有

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /hcr
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

从网址中删除 public

我可以访问http://domain.com/hcr/并加载页面(没有样式,图片,...)。 但是所有其他链接到页面,图像,css,js,......都是错误的。 例如,它们链接到

http://domain.com/css/styles.css

而不是链接到

http://domain.com/hcr/css/styles.css

即,所有链接都缺少“hcr”。

如果我去

http://maintimeline.com/hcr/public/

一切正常,但我在网址中有“公开”,我想删除。

那么,如何使用.htaccess文件从网址中删除“public”?

1 个答案:

答案 0 :(得分:1)

按照以下简单步骤

1. move all files from public directory to root /laravel/ now, no need of public directory, so optionally you can remove it now
2. now open index.php and make following replacements

require DIR.'/../bootstrap/autoload.php';

 to

 require DIR.'/bootstrap/autoload.php';

 and

 $app = require_once DIR.'/../bootstrap/start.php';

 to

 $app = require_once DIR.'/bootstrap/start.php';

 3. now open bootstrap/paths.php and change public directory path:
 'public' => DIR.'/../public',

 to

 'public' => DIR.'/..',