所以,我在Windows上运行xampp。我目前正在尝试熟悉laravel框架。现在,当我指出这一点时,我该如何直接在根目录中访问我的laravel应用程序/网站?
例如,
- 我现在正在做的是:localhost/laravel/public/about(查看关于页面)
- 我想要做的是:localhost/laravel/about
有什么好的解决方案吗? 我需要在laravel的根文件夹中添加.htacess文件吗? (而不是public文件夹内)。
有什么建议吗?
所以,我在Windows上运行xampp。我目前正在尝试熟悉laravel框架。现在,当我指出这一点时,我该如何直接在根目录中访问我的laravel应用程序/网站?
例如,
有什么好的解决方案吗? 我需要在laravel的根文件夹中添加.htacess文件吗? (而不是public文件夹内)。
有什么建议吗?
.htaccess
的文件,并将以下内容添加到其中:<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
由于用户账户控制的缘故,Windows 在尝试编辑 Hosts 文件时可能会遇到麻烦。由于我经常处理各种小型爱好项目,所以不得不经常编辑这个文件,以下是我通常做的事情。
在文件底部添加以下内容:
127.0.0.1 laravel.dev
这将告诉Windows在浏览器地址栏输入laravel.dev时将其指向本地主机。
在文件底部添加以下内容:(假设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 目录,而是在本地计算机上创建一个虚拟主机指向 public 目录,并将远程托管中的 public 更改为 public_html,并将您的域名指向此目录。原因是,您的整个 Laravel 代码将更加安全,因为它比 public 目录下深一层 :)
方法一: 我只需将 server.php 重命名为 index.php,它就能工作。
方法二:
这是我的目录结构,
/laravel/
... app
... bootstrap
... public
... etc
按照以下简单步骤操作:
require DIR.'/../bootstrap/autoload.php';
改为
require DIR.'/bootstrap/autoload.php';
并且
$app = require_once DIR.'/../bootstrap/start.php';
改为
$app = require_once DIR.'/bootstrap/start.php';
'public' => DIR.'/../public',
改为
'public' => DIR.'/..',
就这样了,现在尝试访问http:// localhost / laravel /
composer.json
和artisan
移动到其他位置,则无法调用它们。我尝试将它们移动到名为“local”的文件夹中,但当我运行php artisan
或composer
时,会出现“在根目录中找不到文件”的错误。 - Yousef Altaf.env
文件。 - smartrahatphp_admin_value open_basedir
和Directory mark
设置为public
文件夹,只需设置DocumentRoot
即可!非常感谢! - MewX我正在使用L5,这对我很有效:
-- 就这样了!!!
在 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
这样它就可以工作了
或者如果您只是在本地开发
运行此命令php artisan serve
它将在localhost:8000
(端口可能会有所不同)启动本地服务器
将以下代码添加到您的 .htaccess 文件中(如果不存在,请在 Laravel 根目录上创建一个 .htaccess 文件)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
来源: http://tutsnare.com/remove-public-from-url-laravel/
在这个来源中,你也可以找到另一种方法来实现同样的功能。
更新:最好的方法是更改目录结构,具体请参考来源URL。
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]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>