我在VPS服务器Linux Debian上部署了一个Laravel应用程序。但是我在我的网页上收到一条消息,比如:
禁止
您没有权限访问该页面!
我尝试了许多配置,特别是我的laravel.conf
位于/etc/apache2/sites-enabled/
和我的.htaccess
位于我的项目根级别。
我也试过命令bellow:
sudo find /var/www/html/laravel_app -type d -exec chmod 644 {} \;
sudo find /var/www/html/laravel_app/storage -type f -exec chmod 755 {} \;
字符串
我已经花了一个星期的时间来做这个问题,我试了很多其他的stackoverflow的答案都没有成功。
这里是我的laravel.conf
文件
<VirtualHost *:80 *:3000>
ServerAdmin [email protected]
DocumentRoot /var/www/html/laravel_app
<Directory /var/www/html/laravel_app>
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Order allow,deny
Allow from all
</Directory>
LogLevel debug
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
型
下面是我的.htaccess
文件
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
DirectoryIndex index.php
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
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>
型
3条答案
按热度按时间myzjeezk1#
您的
DocumentRoot
是/var/www/html/laravel_app
,但Laravel的index.php
位于名为public
的目录中。看起来你的
DocumentRoot
指向你的Laravel根目录,但那里没有index.php
。如果你没有启用+Indexes
的目录列表.更新你的根目录指向Laravel的
public
目录:字符串
您提到"* my. htaccess located in my project root level *"-如果您的意思是您已经将
.htaccess
从laravel_app/public/.htaccess
移动到laravel_app/.htaccess
,请不要这样做。As the docs say:您不应该尝试将index.php文件移动到项目的根目录下,因为从项目根目录为应用程序提供服务会将许多敏感的配置文件暴露给公共Internet:
你在Apache配置中混合了旧指令和新指令。来自文档:
将Order、Allow或Deny等旧指令与Require等新指令混合在一起在技术上是可行的,但不鼓励这样做。
这是Apache 2.2配置,应该删除:
型
这被Apache 2.4的配置等价物所取代,你已经正确地拥有了:
型
正如我在评论中提到的,如果你有多个vhost,你应该是using
ServerName
,这样Apache就可以为传入的请求确定使用哪个主机配置。如果你只有这一个Laravel vhost,禁用所有其他的。xdnvmnnf2#
试试这个结构:
字符串
正如在注解中所说的,你应该添加public目录,因为它包含了要呈现的index.php文件. wish,它可以帮助你解决你的问题。
esyap4oy3#
最后,我发现了导致权限访问错误的问题。在我的
/etc/apache2/sites-enabled
目录中,我已经有另一个名为default-ssl.conf
的vhost配置文件。由于未知原因,这是我的服务器执行的这个文件,而不是我创建并启用sudo a2ensite laravel.conf
的vhost文件。所以我编辑了该文件并使用@不要惊慌回答配置.另一个问题是有关我的.htaccess你提到.我移动.htaccess并将其放在laravel_app/public目录.我不得不执行下面的这些命令也授予权限:字符串
在我的.htaccess下面
型
在我的default-ssl.conf下面
型
现在它工作正常。但我有一个像不安全的连接在这个网站上的消息。我会在另一个讨论或文档中寻找。我认为SSL配置问题。谢谢大家,真的很感激和对不起我的英语!