如何在生成的Laravel URL中删除“public/index.php”?

11 浏览
0 Comments

如何在生成的Laravel URL中删除“public/index.php”?

我需要在Laravel中的生成的URL中删除index.phppublic/index.php ,通常路径是localhost/public/index.php/someWordForRoute,应该像localhost/someWordForRoute这样。\n.htaccess\n



Options -MultiViews

RewriteEngine On
# Redirect Trailing Slashes.
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php[L]

\napp/config/app.php\n

'url' => 'http://localhost',

\n我该如何更改?

0
0 Comments

在Laravel中生成的URL中出现“public/index.php”的问题是由于默认情况下,Laravel将公共目录设置为网站的根目录,因此在URL中会包含“public/index.php”。

解决这个问题的方法是通过修改.htaccess文件来重写URL。首先,在网站的根目录下创建一个.htaccess文件,将以下代码添加到文件中:


    RewriteEngine on
    RewriteRule    ^$    public/    [L]
    RewriteRule    (.*) public/$1    [L]

然后,进入public目录,创建另一个.htaccess文件,并将以下代码添加到文件中:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?url=$1 [PT,L]

这样配置后,Laravel生成的URL中将不再包含“public/index.php”。在.htaccess文件中,使用了mod_rewrite模块来重写URL。第一个.htaccess文件将所有请求重写到public目录,而第二个.htaccess文件将请求重写到index.php文件。

这种方法的优点是可以隐藏URL中的“public/index.php”,使URL更加简洁。然而,这种方法也存在一些缺点,例如可能会导致URL重写问题和性能损失。

在Laravel 9中,这是唯一的选项来解决URL中出现“public/index.php”的问题。

0
0 Comments

在Laravel中生成的URL中如何删除“public/index.php”的问题,其出现的原因是.env文件对所有访问您的网站的人都是可访问的,除非您通过保护您的Web服务器来避免这种情况。解决方法是将Laravel根文件夹中的server.php重命名为index.php,并将/public目录中的.htaccess文件复制到Laravel根文件夹中。如果Luazan的答案不起作用,可以尝试这种方法。此外,建议编辑public文件夹中的index.php文件,以便在用户直接访问该链接时将其重定向到public之外。此外,由于这种方法,js和css文件将不再从public文件夹加载。

0
0 Comments

如何在Laravel生成的URL中去除“public/index.php”?

问题出现的原因:

在Laravel中,默认情况下,所有的请求都会经过public/index.php文件。这样做是为了增强安全性和保护应用程序的核心文件。但是,对于一些特定需求的项目来说,希望能够直接访问网站而不需要在URL中包含“public/index.php”。

解决方法一:使用.htaccess文件

1. 在Laravel根目录下创建一个.htaccess文件。

2. 编辑.htaccess文件,添加以下代码:


   RewriteEngine On 
   RewriteRule ^(.*)$ public/$1 [L]

3. 这样,你就可以在不包含“/public/index.php/”的情况下访问网站了。

解决方法二:将文件移动到根目录

1. 在根目录下创建一个新的文件夹,将除了public文件夹以外的所有文件和文件夹移动到这个文件夹中。

2. 将public文件夹中的所有内容移动到根目录中。

3. 编辑laravel_code/bootstrap/paths.php文件,将以下代码修改为:

'app' => __DIR__.'/../app',
'public' => __DIR__.'/../../',

4. 编辑index.php文件,将以下代码修改为:

require __DIR__.'/laravel_code/bootstrap/autoload.php';     
$app = require_once __DIR__.'/laravel_code/bootstrap/start.php';

这样,你就可以在不包含“/public/index.php/”的情况下访问网站了。

通过以上两种方法,你可以轻松地去除Laravel生成的URL中的“public/index.php”。如果你使用的是Debian Linux系统,还需要编辑etc/apache2/apache2.conf文件,将其中的AllowOverride None修改为AllowOverride All。

请注意,将public文件夹移动到根目录的方法不适用于生产环境,因为public文件夹的存在是有原因的。

参考来源:How to remove /public/ from URL in Laravel

0