所以,我在 Windows 上运行 xampp。我目前正在尝试熟悉 laravel 框架。现在,当那被指出时。我如何能够直接在根目录中访问我的 laravel 应用程序/网站?
例子,
- 我现在正在做的是:localhost/laravel/public/about(查看 about 页面)
- 我想做的是:localhost/laravel/about
有什么好的解决方案吗?我需要在 laravel 的根文件夹中添加一个 .htacess 文件吗?(不是公共的)。
有什么建议么?
所以,我在 Windows 上运行 xampp。我目前正在尝试熟悉 laravel 框架。现在,当那被指出时。我如何能够直接在根目录中访问我的 laravel 应用程序/网站?
例子,
有什么好的解决方案吗?我需要在 laravel 的根文件夹中添加一个 .htacess 文件吗?(不是公共的)。
有什么建议么?
最简单的方法是.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
这就是我的做法。
由于用户帐户控制,Windows 在尝试编辑 Hosts 文件时可能是一个真正的 PITA。由于我从事各种小型爱好项目,我必须一直编辑这个文件,所以这就是我所做的。
在文件的底部,添加以下内容:
127.0.0.1 laravel.dev
每当您在浏览器的地址栏中输入 laravel.dev 时,这会告诉 Windows 将 Web 浏览器指向 localhost。
在文件的底部,添加:(我假设 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]
http://laravel.dev
http://laravel.dev/about
最佳方法:我不建议删除公共,而是在本地计算机上创建一个指向公共目录的虚拟主机,并在远程主机上将公共更改为 public_html 并将您的域指向该目录。原因,你的整个 laravel 代码将是安全的,因为它的一级到你的公共目录:)
方法 1: 我只是将 server.php 重命名为 index.php 并且它可以工作
方法二:
这是我的目录结构,
/laravel/
... app
... bootstrap
... public
... etc
按照这些简单的步骤
需要DIR .'/../bootstrap/autoload.php';
至
需要DIR .'/bootstrap/autoload.php';
和
$app = require_once DIR .'/../bootstrap/start.php';
至
$app = require_once DIR .'/bootstrap/start.php';
'public' => DIR .'/../public',
至
'公共' => DIR .'/..',
就是这样,现在试试 http://localhost/laravel/
将/public文件夹的内容下移一级。
您需要更新 index.php 中的包含行以指向正确的位置。(如果它下降了一个级别,请删除“../”)。
将您的 apache 文档根目录设置为公用文件夹,而不是 laravel 文件夹。这是最简单的技术,推荐用于生产环境。
我正在使用 L5,这对我来说很好:
——就是这样!!!
我也一直在努力解决这个问题,但我找到了一个简单的解决方案,只需要您在应用程序的根目录创建另一个 .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 文件夹。
这就是我为自己解决问题的方法。
希望能帮助到你!
干杯。
在您的 .htaccess 中添加以下代码(如果不存在,请在 laravel 根目录上创建一个 .htaccess)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
来源:http ://tutsnare.com/remove-public-from-url-laravel/
在 Source,您还可以获得另一种方法来做同样的事情。
更新:首选方法是更改在源 URL 中解释的目录结构。
将以下代码添加到 htaccess 文件中。它可能会帮助你。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
只是在简单的步骤中,我在 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.php
为index.php
它会起作用
或者如果你只是做本地开发
运行这个命令php artisan serve
它将在 localhost:8000
(端口可能会有所不同)启动本地服务器
您可以使用符号链接或编辑httpd.conf
文件。
检查我对另一个类似问题的回答。我希望它有所帮助。
如果您不想承受配置.htaccess文件的压力,您可以通过以下方式使用 PHP 内置服务器:
laravel\public
php -S localhost:8000
在您可以访问您的网站后,请访问:
http:://localhost:8000
无需附加即可工作public
查看官方手册了解更多信息:http: //php.net/manual/en/features.commandline.webserver.php
使用 cmd 转到项目文件夹并输入“php artisan serve”。现在导航到:localhost:8000
我发现 geart flow 可以在本地使用 laravel。
你可以做的是稍微配置一下xampp。在您的 xamp 的 httpd.conf 文件中,您必须找到文档 DocumentRoot
和<Directory>
. 将根目录更改为您的 laravel 公共文件夹并重新启动 apache。从什么时候开始,您只需键入 localhost 即可访问您的项目。现在,如果您愿意,您可以更改主机文件并重写本地 dns,例如:127.0.0.1 example.laravel.com
,现在您可以使用真实 url 访问您的项目。它可能看起来有点复杂,但事实并非如此。
替代方案是php artisan serve
. 您可以在不同的端口和重写主机文件时启动服务器。
您可以添加一些功能来进一步改进您的工作流程,例如vagrant
或ngrok
. 您可以分享您的项目以进行现场演示(此处可能存在速度问题)。
你需要做以下事情:
首先将公共目录的所有内容复制到您的根目录中,即把公共文件夹的内容 1 上一步。
修改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>
需要在 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__.'/..',
这是我的建议
要遵循的简单步骤:
server.php
(在根目录中)为index.php
.htaccess
文件从公共目录复制到根目录重命名server.php
toindex.php
和 copy .htaccess
from/public
是正确的方法。如果您在线发送您的应用程序,只需将 DocumentRoot 更改为 public 路径。
这已经被问过很多次了。我有同样的问题。我通过使用 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 的系统。
如果您从 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';
并运行程序