16

所以,我在 Windows 上运行 xampp。我目前正在尝试熟悉 laravel 框架。现在,当那被指出时。我如何能够直接在根目录中访问我的 laravel 应用程序/网站?

例子,

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

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

有什么建议么?

4

20 回答 20

12

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

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

它应该很容易重定向。

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

于 2014-05-08T16:05:58.887 回答
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
    

    每当您在浏览器的地址栏中输入 laravel.dev 时,这会告诉 Windows 将 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>
    
  • 将 htaccess 文件添加到您的 laravel/public 文件夹(如果它不存在)。我认为 L4 附带的默认 htaccess 文件如下所示:

    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    
  • 重新启动您的 xampp apache 服务器。
  • 打开网络浏览器并在地址栏中输入 -http://laravel.dev
  • 这将带您进入“public”文件夹中的 index.php 文件。
  • 要进入关于页面,我认为地址是http://laravel.dev/about
于 2013-03-26T21:58:15.790 回答
10

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

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

方法二:

这是我的目录结构,

/laravel/
... app
... bootstrap
... public
... etc

按照这些简单的步骤

  1. 将所有文件从公共目录移动到根目录 /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',

'公共' => DIR .'/..',

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

于 2014-03-21T04:54:38.120 回答
10

/public文件夹的内容下移一级。

您需要更新 index.php 中的包含行以指向正确的位置。(如果它下降了一个级别,请删除“../”)。

于 2013-05-15T15:25:06.167 回答
9

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

于 2014-12-31T04:09:39.277 回答
4

我正在使用 L5,这对我来说很好:

  1. 将 Laravel 根文件夹中的 server.php 重命名为 index.php
  2. 将 .htaccess 文件从 /public 目录复制到你的 Laravel 根文件夹。

——就是这样!!!

于 2015-11-16T07:13:57.643 回答
3

我也一直在努力解决这个问题,但我找到了一个简单的解决方案,只需要您在应用程序的根目录创建另一个 .htaccess。

.htaccess 本身应包含以下内容:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^{yoursite}.{extension} [NC]
RewriteRule (.*) http://www.{yoursite}.{extension}/$1 [R=301,L]

RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]

整个系统继续工作,但它重定向到 /public 文件夹。

这就是我为自己解决问题的方法。

希望能帮助到你!

干杯。

于 2013-09-12T23:03:18.290 回答
3

在您的 .htaccess 中添加以下代码(如果不存在,请在 laravel 根目录上创建一个 .htaccess)

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

来源:http ://tutsnare.com/remove-public-from-url-laravel/

在 Source,您还可以获得另一种方法来做同样的事情。

更新:首选方法是更改​​在源 URL 中解释的目录结构。

于 2015-02-13T07:04:49.847 回答
3

将以下代码添加到 htaccess 文件中。它可能会帮助你。

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
于 2014-04-09T10:47:12.723 回答
3

只是在简单的步骤中,我在 laravel 5 中做 .htaccess 像这样在 laravel 文件夹中

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

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

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

然后将您的重命名server.phpindex.php

它会起作用

或者如果你只是做本地开发

运行这个命令php artisan serve

它将在 localhost:8000(端口可能会有所不同)启动本地服务器

于 2015-06-23T07:42:41.423 回答
2

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

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

于 2013-03-23T11:54:21.463 回答
2

如果您不想承受配置.htaccess文件的压力,您可以通过以下方式使用 PHP 内置服务器:

  1. 从您的命令实用程序, cd 进入laravel\public
  2. 运行:php -S localhost:8000

在您可以访问您的网站后,请访问:

http:://localhost:8000

无需附加即可工作public

查看官方手册了解更多信息:http: //php.net/manual/en/features.commandline.webserver.php

于 2015-06-23T09:00:54.103 回答
2

使用 cmd 转到项目文件夹并输入“php artisan serve”。现在导航到:localhost:8000

于 2015-11-25T14:40:55.040 回答
2

我发现 geart flow 可以在本地使用 laravel。

你可以做的是稍微配置一下xampp。在您的 xamp 的 httpd.conf 文件中,您必须找到文档 DocumentRoot<Directory>. 将根目录更改为您的 laravel 公共文件夹并重新启动 apache。从什么时候开始,您只需键入 localhost 即可访问您的项目。现在,如果您愿意,您可以更改主机文件并重写本地 dns,例如:127.0.0.1 example.laravel.com,现在您可以使用真实 url 访问您的项目。它可能看起来有点复杂,但事实并非如此。

替代方案是php artisan serve. 您可以在不同的端口和重写主机文件时启动服务器。

您可以添加一些功能来进一步改进您的工作流程,例如vagrantngrok. 您可以分享您的项目以进行现场演示(此处可能存在速度问题)。

于 2015-11-27T09:12:22.740 回答
1

你需要做以下事情:

  1. 首先将公共目录的所有内容复制到您的根目录中,即把公共文件夹的内容 1 上一步。

  2. 修改index.php的内容

来自 =>

require __DIR__ . "/../bootstrap/autoload";
$app = require_once __DIR__ . "/../boostrap/start.php"

至 =>

 "require __DIR__.'/bootstrap/autoload.php';"
"$app = require_once __DIR__.'/bootstrap/start.php';

以及 bootstrap/paths.php 的内容

来自 =>'public' => __DIR__.'/../../',

至 =>'public' => __DIR__.'/..',

3.然后最后在你的根目录中创建.htaccess文件并写下这个。

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>
    RewriteEngine On
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
于 2014-08-18T16:44:15.767 回答
1

需要在 larvel4 应用程序中删除公共段

Laravel 4 要求您将应用程序代码放在比 Web 根目录高一级的位置,这会给一些停留在共享主机上并且不允许这样设置的开发人员带来问题。实际上很容易绕过它。我读到一些 L4 特定的包在这样的设置上可能会出现问题,但我还没有遇到任何包这样的问题。

所以首先在你喜欢的地方安装 L4。我喜欢 Niall 写的关于保持基本 L4 应用程序最新的文章,所以去看看:安装和更新 Laravel 4

我发现这个例子只需克隆 repo 就足够了(假设你已经全局安装了 composer,如果没有,请访问http://getcomposer.org/):

git clone -b develop git://github.com/laravel/laravel.git app_name

php作曲家安装

请注意,我们正在克隆开发分支,因为此时 L4 仍处于测试阶段。

因此,要从您的 URL 中删除“公共”部分,只需将所有文件和文件夹从公共移动到您的应用程序根目录,您最终会得到如下文件夹结构:

/app
/bootstrap
/packages (copied from /public)
/vendor
.htaccess (copied from /public)
artisan
composer.json
favicon.ico (copied from /public)
index.php (copied from /public)
robots.txt (copied from /public)
server.php

现在我们需要在 index.php 中编辑我们的路径:

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

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

然后只需在 /bootstrap/paths.php 文件中设置公共目录:

'public' => __DIR__.'/..',

这是我的建议

于 2015-12-14T11:32:43.517 回答
1

要遵循的简单步骤:

  1. 重命名server.php(在根目录中)为index.php
  2. .htaccess文件从公共目录复制到根目录
于 2016-01-08T14:17:06.133 回答
1

重命名server.phptoindex.php和 copy .htaccessfrom/public是正确的方法。如果您在线发送您的应用程序,只需将 DocumentRoot 更改为 public 路径。

于 2016-01-26T05:58:11.003 回答
0

这已经被问过很多次了。我有同样的问题。我通过使用 vhosts 和 .htaccess 文件解决了这个问题。我想写关于 Windows 上的 XAMPP 和 Ubuntu 上的 LAMP 安装的解决方案。我在 Windows 上的配置:我的目标是通过输入下面的 uri 来访问我的应用程序

http://localhost/subdir

c:\xampp\htdocs\subdir\ # this was laravel root directory
c:\xampp\apache\conf\extra\httpd-vhosts.conf # this virtual hosts file

我使用了 Laravel 网站上的原始 .htaccess 文件(记住 .htaccess 文件必须在公共目录中),但我只添加了一行

RewriteBase /subdir (just below RewriteEngine On)

此外,在 httpd-vhosts 文件中,您应该像这样添加子目录别名:

Alias /subdir
"C:/xampp/htdocs/subdir/public"
<Directory "C:/xampp/htdocs/subdir/public">
  Order allow,deny
  Allow from all
  Options All
  AllowOverride All
  Require all granted
</Directory>

希望我的解释一切都清楚。这个答案可以很容易地应用于基于 unix 的系统。

于 2018-02-24T13:02:47.073 回答
0

如果您从 url 中删除 public 首先将 index.php 和 .htaccess 文件从 public 文件夹移动到 laravel 的根目录并更改 index.php 文件

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

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

并运行程序

于 2016-06-30T06:53:30.570 回答