所以,我在Windows上运行xampp。我目前正在努力熟悉laravel框架。现在,当那些指出。我怎样才能直接在root中访问我的laravel应用程序/网站?
实施例,
对此有什么好的解决方案吗?我需要在laravel的根文件夹中添加.htacess文件吗? (不是公众的)。
有什么建议吗?
答案 0 :(得分:12)
最简单的方法是在Laravel根目录中创建.htaccess
文件,其中包含以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
应该很容易重定向。
参考: https://coderwall.com/p/erbaig/laravel-s-htaccess-to-remove-public-from-url
答案 1 :(得分:11)
我是这样做的。
由于用户帐户控制,Windows在尝试编辑Hosts文件时可以是真正的PITA。由于我从事各种小型业余爱好项目,所以我必须一直编辑这个文件,这就是我的工作。
在文件底部添加:
127.0.0.1 laravel.dev
这告诉Windows只要您在浏览器的地址栏中输入laravel.dev,就会将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
答案 2 :(得分:10)
将 / public 文件夹的内容向下移动一级。
您需要更新index.php中的包含行以指向正确的位置。 (如果它是一个级别,删除'../')。
答案 3 :(得分:10)
BEST Approch :我不建议删除public,而是在本地计算机上创建指向公共目录的虚拟主机,并在远程主机上将public更改为public_html并将域指向此目录。原因,你的整个laravel代码将是安全的,因为它的一级到你的公共目录:)
方法1: 我只是将server.php重命名为index.php,它可以正常工作
方法2:
这是我的目录结构,
/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'=&gt;的 DIR 即可。 '/ .. /公共',
到
'public'=&gt;的 DIR 即可。 '/ ..',
就是这样,现在尝试http:// localhost / laravel /
答案 4 :(得分:9)
将apache的文档根目录设置为公用文件夹,而不是laravel文件夹。这是最简单的技术,推荐用于生产环境。
答案 5 :(得分:4)
我使用的是L5,这对我很有用:
- 那就是!!!“
答案 6 :(得分:3)
我只是在laravel 5中做了一个简单的步骤 在laravel文件夹中像这样制作.htaccess
<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
它会起作用
或者如果您只是进行本地开发
运行此comman php artisan serve
它将在localhost:8000
启动本地服务器(端口可能会有所不同)
答案 7 :(得分:3)
在.htaccess中添加以下代码(如果不存在,请在laravel根目录下创建.htaccess)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
来源:http://tutsnare.com/remove-public-from-url-laravel/
在Source你也可以得到另一种方法。
更新:首选方法是更改目录结构,在源网址中说明。
答案 8 :(得分:3)
将以下代码添加到htaccess文件中。它可能对你有帮助。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
答案 9 :(得分: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文件夹。
这就是我为自己解决问题的方法。
希望它有所帮助!
干杯。
答案 10 :(得分:2)
您可以使用符号链接或编辑httpd.conf
文件。
检查我的answer其他类似问题。我希望它有所帮助。
答案 11 :(得分:2)
如果您不想承受配置 .htaccess 文件的压力, 你可以通过这样做来使用PHP内置服务器:
laravel\public
php -S localhost:8000
访问:
后,您可以访问您的网站 http:://localhost:8000
无需附加public
请参阅官方手册以了解更多信息: http://php.net/manual/en/features.commandline.webserver.php
答案 12 :(得分:2)
使用cmd转到项目文件夹并输入&#34; php artisan serve&#34;。 现在导航到:localhost:8000
答案 13 :(得分:2)
我发现geart flow可以与laravel localy一起使用。
您可以做的是稍微配置xampp。在xamp的httpd.conf文件中,您必须找到文档DocumentRoot
和<Directory>
。将根目录更改为您的laravel公用文件夹并重新启动apache。因为只需键入localhost即可简单地访问项目。现在,如果您需要,可以更改主机文件并重写本地dns,例如:127.0.0.1 example.laravel.com
现在您可以使用真实URL访问您的项目。它可能看起来有点复杂,但事实并非如此。
替代方案是php artisan serve
。您可以在不同的端口上启动服务器,并在重写主机文件时。
您可以添加一些功能来进一步改善工作流程,例如vagrant
或ngrok
。您可以分享您的项目以进行实时演示(此处可能会出现速度问题)。
答案 14 :(得分:1)
您需要做以下事情:
首先复制根目录中公共目录的所有内容,即将公用文件夹1的内容升级。
修改index.php的内容
From =&gt;
require __DIR__ . "/../bootstrap/autoload";
$app = require_once __DIR__ . "/../boostrap/start.php"
To =&gt;
"require __DIR__.'/bootstrap/autoload.php';"
"$app = require_once __DIR__.'/bootstrap/start.php';
以及bootstrap / paths.php的内容
From =&gt; 'public' => __DIR__.'/../../',
To =&gt; '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>
答案 15 :(得分:1)
需要删除larvel4 app中的公共段
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 composer install
请注意,我们正在克隆开发分支,因为此时L4仍处于测试阶段。
因此,要从您的网址中删除“公开”部分,只需将所有文件和文件夹从公开移动到您的应用根目录,您最终将获得如下文件夹结构:
/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__.'/..',
这是我的建议
答案 16 :(得分:1)
简单步骤:
server.php
(在根目录中)重命名为index.php
.htaccess
文件从公共目录复制到根目录答案 17 :(得分:1)
将server.php
重命名为index.php
,并从.htaccess
复制/public
是正确的方法。
如果您在线发送应用程序,只需将DocumentRoot更改为公共路径。
答案 18 :(得分:0)
如果你从url中删除public,首先将index.php和.htaccess文件从公共文件夹移动到laravel的root并更改index.php文件
要求DIR。'/ .. / bootstrap / autoload.php'; $ app = require_once DIR。'/ .. / bootstrap / start.php';
到
要求DIR。'/ bootstrap / autoload.php'; $ app = require_once DIR。'/ bootstrap / start.php';
并运行程序
答案 19 :(得分: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的系统。