从子文件夹

时间:2015-08-12 20:47:40

标签: apache .htaccess laravel laravel-5

我正在构建一个Laravel应用程序,它将位于当前项目的子文件夹中。我正在尝试删除URL中的/ public,以便用户可以通过以下URL查看项目:

www.domain.com/project

而不是默认...

www.domain.com/project/public

我在StackOverflow和Laracasts论坛上做了一些挖掘,我在项目根目录的.htaccess文件中尝试了这个:

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

然而,当我这样做时,我的路线不再起作用了。甚至/的默认路由也停止了。

许多答案都提到最好的方法是更改​​Apache配置中的根目录,以便它从/ public而不是在目录的根目录中提供文件。

问题是,在主项目的子文件夹中,如何才能使这个项目受到影响? www.domain.com的网站运行正常,网址中没有/ public。

2 个答案:

答案 0 :(得分:0)

有几种选择。我不认为你想尝试使用mod重写(或类似的东西)在htaccess级别修复它

一种选择是创建另一个侦听abitrary端口的虚拟主机(例如,8080)。然后将此虚拟主机的文档根目录设置为... / public /

另一种选择是,您可以欺骗/ etc / hosts或Windows hosts文件中的DNS,并设置dev.domain.com虚拟主机。

答案 1 :(得分:0)

•转到mainproject / public&gt;&gt;

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);

    builder.Entity<User>().ToTable("Users"); // Your custom IdentityUser class
    builder.Entity<IdentityUserLogin<string>>().ToTable("UserLogins");
    builder.Entity<IdentityUserToken<string>>().ToTable("UserTokens");
    builder.Entity<IdentityUserClaim<string>>().ToTable("UserClaims");
    builder.Entity<IdentityUserRole<string>>().ToTable("UserRoles");
    builder.Entity<IdentityRoleClaim<string>>().ToTable("RoleClaims");
    builder.Entity<IdentityRole>().ToTable("Roles");            
}

1.从公共文件夹中剪切这5个文件,然后粘贴到主项目文件夹中,这意味着公共文件夹的一侧... mainproject / files

2.粘贴后,打开index.php,修改

a.  .htacess
b.  favicon.ico
c.  index.php
d.  robots.txt
e.  web.config