在Laravel 9中使用共享主机/CPanel主机上的.htaccess从URL中删除public

jmp7cifd  于 2023-02-09  发布在  其他
关注(0)|答案(2)|浏览(136)

我尝试在Cpanel共享主机上托管Laravel 9应用程序。但是,即使我尝试访问https://example.com/public,应用程序仍不断返回以下错误。下面是我的.htaccess根文件;它曾经可以完美地与Laravel 8一起工作,但现在不能再工作了。我的问题是我想只使用没有X1 M1 N1 X或X1 M2 N1 X的域(Eidogg.,www.example.com)访问我的应用程序example.com。
内部服务器错误500

.htaccess网站

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
8zzbczxx

8zzbczxx1#

RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
  • CondPattern* !^public上缺少斜杠前缀,因此此 condition 将始终成功并重复重写请求,可能导致重写循环(即500错误)。

应该是这样的:

RewriteCond %{REQUEST_URI} !^/public($|/)
RewriteRule ^(.*)$ public/$1 [L]

然而,您还应该在/public子目录中有另一个带有mod_rewrite指令的.htaccess文件,用于管理通过Laravel应用程序的路由,这应该可以防止重写循环。

m3eecexj

m3eecexj2#

如何在laravel 9中从url中删除public

  • 创建一个. htaccess文件在根目录
  • 添加此代码

重写引擎打开
重写条件% {请求文件名}-d [OR]重写条件% {请求文件名}-f重写规则^^$1 [N]
重写条件% {请求URI}(.\w +$)[NC]重写规则^(. *)$公共/$1
重写条件% {请求文件名}! -d重写条件% {请求文件名}! -f重写规则^server.php

  • 在根目录下创建server.php
  • 添加此代码

$uri =网址解码(解析网址($_ SERVER ['请求网址'],PHP网址路径));
//此文件允许我们从//内置PHP Web服务器模拟Apache的"mod_rewrite"功能。这提供了一种方便的方法来测试Laravel//应用程序,而无需在此处安装"真正的" Web服务器软件。if($uri!=='/'&& file_exists(DIR.'/public'. $uri)){return false;}
需要一个目录。"/public/index.php ";

相关问题