我通过网络搜索解决了我的问题,但是没有解决方案适用于我,所以经过几个小时的路由模块挣扎后,我决定请你帮忙 .
Problem
我无法从 /public 目录外访问Laravel应用程序 . 我需要在浏览器中键入localhost \ projects \ laravel \ public,但我想要的是使用 /public 的URL . 主要原因是因为我使用共享主机并且无法访问apache配置文件,所以我无法创建vhost .
Background
我已经在:** c:\ xampp \ htdocs \ projects \ laravel **下手动安装了Laravel框架,并使用composer为我完成剩下的工作 .
路由已设置为: Route::get('/', 'HomeController@showWelcome');
在我的项目根目录** c:\ xampp \ htdocs \ projects \ laravel **我放了一个.htacces文件,其中包含以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /projects/laravel/
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
在我的Application根目录 c:\xampp\htdocs\projects\laravel\public 中,我有.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>
When I type: localhost\projects\laravel\ I've got NotFoundHttpException
当我输入:localhost \ projects \ laravel \ public我有欢迎页面
任何帮助都会很感激,谢谢 .
3 回答
最后,我有这个东西在工作 . 有两种解决方案可以做 .
需要将所有公共内容提升级别
秒需要您的共享主机目录根结构略有变化 - if allowed
解决方案#1
@Wasim在这个帖子中发布了第一个我不想实现的内容:Laravel 4 removing public from URL由于内容核心结构与应用程序本身位于同一目录中,因此解决方案无法保存 . 这可能会在将来的实施中引起一些问题 .
您需要将 public/ 文件夹中的所有内容从一个级别向上移动到项目 ROOT 目录中,然后替换 index.php 文件中的内部路径以获得正确的一个 . 出于安全原因,此.htaccess文件需要放入项目ROOT目录中
上面描述的修改后的Laravel结构可以上传到您的共享虚拟主机,应用程序应该在我们的/ http地址中运行 .
解决方案2(无法访问共享主机上的http.conf文件)
此解决方案不要求您将/ public文件夹的内容移动一级,但要求您对共享主机中的 ../ROOT 目录具有读写访问权限(../ROOT目录主要包含 public_html , public_ftp 等文件夹) .
您需要将Laravel结构移动到 ../ROOT 目录中,如下所示:
文件格式 /public 文件夹转到 public_html
然后,对于带有'public'键的行,需要修改/bootstrap/paths.php:
'public' => DIR . '/../public'至'public' => DIR . '/ .. / public_html '
如果有人有类似的问题,这个解决方案不起作用请告诉我,谢谢 .
如果你想在uri上没有公开,可以使用laravel root中的composer . 使用命令php artisan serve并从浏览器浏览localhost:8000 . 它会带你到主页 .
你从哪里得到这条线?
它不是Laravel的一部分 . 尝试删除它或Laravel根目录中的整个.htaccess文件 .