如何删除生成的Laravel网址中的“公共/索引.php”?

我需要删除或从Laravel中生成的URL中删除;通常路径是,它应该是这样的index.phppublic/index.phplocalhost/public/index.php/someWordForRoutelocalhost/someWordForRoute.

.htaccess

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

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]

应用程序/配置/应用程序.php

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

我该如何改变这一点?


答案 1

选项 1:使用 .htaccess

如果尚未存在,请在 Laravel 根目录中创建一个 .htaccess 文件。创建一个文件,如果它尚不存在,请创建一个Laravel根目录。(通常它位于您的文件夹下).htaccesspublic_html

编辑 .htaccess 文件,使其包含以下代码:

<IfModule mod_rewrite.c>
   RewriteEngine On 
   RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

现在,您应该能够在没有“/public/index.php/”部分的情况下访问该网站。

选项 2:将“/public”目录中的内容移动到根目录

在根目录中创建一个新文件夹,然后移动除公用文件夹之外的所有文件和文件夹。你可以随心所欲地称呼它。我将使用“laravel_code”。

接下来,将所有内容从公共目录移出并移入根文件夹。它应该导致类似于以下内容的内容:enter image description here

之后,我们所要做的就是编辑文件和文件中的位置。laravel_code/bootstrap/paths.phpindex.php

在查找以下代码行:laravel_code/bootstrap/paths.php

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

并将它们更改为:

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

在 中,找到以下行:index.php

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

并将它们更改为:

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

来源:如何从Laravel的URL中删除/public/


答案 2

我在Laravel 4.2上尝试过这个

将 Laravel 根文件夹中的 重命名为 并将文件从目录复制到 Laravel 根文件夹。server.phpindex.php.htaccess/public

我希望它有效


推荐