我在自己的服务器上运行最新版本的laravel,运行Debian和Apache2。
laravel的内容位于我的域名所指向的/var/www
中,但所有功能都通过public
目录实现,因此我必须转到http://mydomain.com/public访问任何内容。
我想更改它,以便只访问http://mydomain.com。这可能吗?
我该如何更改?我是否必须将所有内容提升到/var
的父级?
到目前为止,我还没有在网上找到任何东西表明这是可能的,或者说这是一个好主意。
这不是您的问题,您需要将虚拟主机指向公用文件夹。
在laravel根目录中添加一个文件,将其命名为.htaccess并将其放入
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]
RewriteCond %{REQUEST_URI} ('.'w+$) [NC]
RewriteRule ^(.*)$ public/$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
它肯定会被修复的。
如本文所述,以下内容对我有效:https://stackoverflow.com/a/16569078/3091980
将/public文件夹的所有内容下移一级。然后更新index.php中的include行以指向正确的位置-如果它在一个级别以下,请删除"../".
对不起,我删除了旧答案。。也就是说,如果你将server.php重命名为index,那么它就会工作,但当然不会,因为laarvel并没有加载所有服务。所以您必须将所有公用文件夹文件粘贴到根目录中。并删除"/"来自index.php中的所有位置
找到您的httpd.conf
,将DocumentRoot "/var/www"
的部分更改为"/var/www/public"
,并覆盖目录以允许laravel 的.htaccess
文件
...
DocumentRoot "/var/www/public"
...
<Directory "/var/www/public">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>