我在互联网上尝试了几乎所有关于这个问题的解决方案。
我已将Laravel项目从Windows 10迁移到Linux CentOS 6.我尝试以两种不同的方式更改项目结构,但两者都面临问题。
我正在尝试从[www.example.com]/index.php/[routes url]
中删除index.php。由于此项目正在大学服务器中安装,因此我无权访问root或sudo命令。但我可以请求IT管理员处理需要root访问权限的任务。
我目前在/home/cs4/username (folder)
。我目前的项目结构是:
blog (folder)
- contains all the Laravel framework files other than public folder
public_html (folder)
- contains all the files of laravel public folder plus
- .htaccess file created
.htaccces文件包含以下代码:
# Redirect Trailing Slashes...
#RewriteRule ^(.*)/$ $1 [L,R=301]
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{REQUEST_URI} !/system/.* [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteRule ^ index.php [L]
RewriteRule ^(.*)$ /index.php/$1 [L]
我已经替换了在public_html文件夹中的2行index.php文件
来自这些
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
到
require __DIR__.'/../blog/bootstrap/autoload.php';
$app = require_once __DIR__.'/../blog/bootstrap/app.php';
问题是http://example.ac.uk/~username/加载项目但是对于所有其他网址,我必须添加index.php,例如:http://www.example.ac.uk/~username/index.php/login而不是http://www.example.ac.uk/~username/login,类似于所有其他网址。
我还尝试将整个项目放在public_html文件夹中,目录结构为:
public_html
-entire project files and folders
-public folder
然后是2个问题:
所有服务器文件如:.env和其他代码都会暴露,从而导致安全风险
我被迫在网址中使用public / index.php。
例如:http://www.example.ac.uk/~username/public/index.php/login代替http://www.example.ac.uk/~username/login,类似于所有其他网址。