Laravel 4从URL中删除public

Kev*_*lan 16 php frameworks laravel

所以,我在Windows上运行xampp.我目前正在努力熟悉laravel框架.现在,当那些指出.我怎样才能直接在root中访问我的laravel应用程序/网站?

例,

  • 我现在正在做的是:localhost/laravel/public/about(查看关于页面)
  • 我想做的是:localhost/laravel/about

对此有什么好的解决方案?我需要在laravel的根文件夹中添加.htacess文件吗?(不是公众的).

有什么建议?

小智 12

最简单的方法是.htaccess使用以下内容在Laravel根目录中创建文件:

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

它应该很容易重定向.

参考: https ://coderwall.com/p/erbaig/laravel-s-htaccess-to-remove-public-from-url


Hom*_*ice 11

这就是我做到的.

  1. 编辑Windows主机文件 - C:\ Windows\System32\drivers\etc\hosts
  2. 编辑Apache vhosts文件 - Drive-Letter:\ xampp\apache\conf\extra\httpd-vhosts.conf
  3. 将一个htaccess文件添加到laravel/public文件夹(如果它还没有)
  4. 重启Xampp apache服务器

由于用户帐户控制,Windows在尝试编辑Hosts文件时可以是真正的PITA.由于我从事各种小型业余爱好项目,所以我必须一直编辑这个文件,这就是我的工作.

  • 安装PSPad.它加载速度非常快,您可以将文件加入书签以便于加载/编辑.如果您加载我上面提到的两个文件并将工作区保存为新项目,Sublime Text也可以正常工作.
  • 右键单击PSPad(或其他编辑器)程序快捷方式,然后选择"以管理员身份运行".除非您这样做,否则无法将更改保存到Hosts文件.
  • 在编辑器中打开Windows主机文件.此文件没有文件扩展名,因此您必须在"文件打开"对话框中选择"所有文件"以查看该文件.
  • 在文件的底部,添加以下内容:

    127.0.0.1  laravel.dev
    
    Run Code Online (Sandbox Code Playgroud)

    这告诉Windows只要您在浏览器的地址栏中输入laravel.dev,就会将Web浏览器指向localhost.

  • 保存文件.
  • 打开xampp Apache httpd-vhosts.conf文件.
  • 在文件的底部,添加:(我假设xampp安装在D:驱动器的根目录下)

    <VirtualHost *:80>
      ServerName laravel.dev
      DocumentRoot "D:/xampp/htdocs/laravel/public"
      <Directory "D:/xampp/htdocs/laravel/public">
      </Directory>
    </VirtualHost>
    
    Run Code Online (Sandbox Code Playgroud)
  • 将htaccess文件添加到laravel/public文件夹(如果尚未存在).我认为L4附带的默认htaccess文件如下所示:

    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    
    Run Code Online (Sandbox Code Playgroud)
  • 重新启动xampp apache服务器.
  • 打开Web浏览器并输入地址栏 - http://laravel.dev
  • 这将带您到"public"文件夹中的index.php文件.
  • 要进入"关于"页面,我认为地址是 http://laravel.dev/about

  • 为什么它应该如此复杂? (6认同)

gan*_*gan 10

/ public文件夹的内容向下移动一级.

您需要更新index.php中的包含行以指向正确的位置.(如果它在一个级别,删除'../').


Was*_* A. 10

BEST Approch:我不建议删除公共,而是在本地计算机上创建虚拟主机指向公共目录,并在远程主机上将public更改为public_html并将域指向此目录.原因,你的整个laravel代码将是安全的,因为它的一级到你的公共目录:)

方法1: 我只是将server.php重命名为index.php并且它可以工作

方法2:

这是我的目录结构,

/laravel/
... app
... bootstrap
... public
... etc
Run Code Online (Sandbox Code Playgroud)

按照这些简单的步骤

  1. 将所有文件从公共目录移动到root/laravel /
  2. 现在,不需要公共目录,因此您可以选择立即删除它
  3. 现在打开index.php并进行以下替换

要求DIR.'/ ../bootstrap/autoload.php';

需要DIR.'/ bootstrap/autoload.php';

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

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

  1. 现在打开bootstrap/paths.php并更改公共目录路径:

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

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

就是这样,现在尝试http:// localhost/laravel /


Gau*_*pta 9

将apache的文档根目录设置为公用文件夹,而不是laravel文件夹.这是最简单的技术,适用于生产环境.


tol*_*orf 2

您可以使用符号链接或编辑httpd.conf文件。

查看我对另一个类似问题的回答。我希望它有帮助。