我对Laravel有点陌生,我正在尝试做下一件事:
我有一个运行Apache和PHP的Centos 7,我在不同的Web应用程序上运行。
我/var/www/html
文件夹中的所有应用程序都index.php
链接了所有应用程序。现在我安装了作曲家Laravel,并在/var/www/html/play/play1
中添加了一个新的Laravel项目。
问题是,当我尝试访问https://example.com/play/play1
时,我应该正确获取Laravel索引页面(public/index.php
下的页面(吗?
相反,我得到了一个包含所有 Laravel 项目文件的目录。如果我访问https://example.com/play/play1/public
我可以看到索引页。
我已经搜索了一遍,并检查了AllowOverwrite
是否全部存在,是否mod_rewrite
打开。在公用文件夹中有一个.htaccess
文件。
任何处理过此类问题的人都可以帮助我吗?
在项目文件夹的根目录(您在其中看到应用程序/资源文件夹等(创建一个 .htaccess 文件并粘贴以下内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
Laravel 的根目录不应该是公开访问的目录 - 您必须指向public/
目录(index.php
和.htaccess
所在的目录(。
因此,在您的服务器配置中,http://example.com/play/play1
应该指向var/www/html/play/play1/public