.htaccess 如何在没有公共文件夹的根目录下运行laravel?

s2j5cfk0  于 2022-11-16  发布在  其他
关注(0)|答案(5)|浏览(172)

我在自己的服务器上运行最新版本的laravel,运行DebianApache2

laravel的内容位于**/var/www,这是我的域名指向的位置,但是所有功能都是通过public**目录实现的,因此我必须转到 http://mydomain.com/public 才能访问任何内容。

我想将其更改为只需访问 http://mydomain.com。是否可以?
如何更改此设置?是否必须将所有内容向上移动到位于**/var**的父级?
到目前为止,我还没有在网上找到任何东西说这是可能的,或者说这是一个好主意。

wvmv3b1j

wvmv3b1j1#

这不是您的问题,您需要将虚拟主机指向公用文件夹。

yrdbyhpb

yrdbyhpb2#

下面的内容对我很有效,正如这里所讨论的:https://stackoverflow.com/a/16569078/3091980
将/public文件夹中的所有内容下移一层,然后更新index.php中的include行,使其指向正确的位置--如果是下移一层,请删除“../"。

fcg9iug3

fcg9iug33#

对不起,我删除了我的旧答案。。那是如果你重命名server.php为索引,那么它将工作,但当然不是,因为laarvel不加载所有的服务。所以你必须粘贴到根所有的公共文件夹文件。

v1uwarro

v1uwarro4#

在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

一定会修好的。

ff29svar

ff29svar5#

找到您的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>

...

相关问题