首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何删除由Laravel生成的URL中的“public/index.php”?

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

Stack Overflow用户
提问于 2014-05-24 04:33:01
回答 17查看 230.5K关注 0票数 95

我需要从Laravel中生成的URL中删除index.phppublic/index.php;通常路径是localhost/public/index.php/someWordForRoute,它应该类似于localhost/someWordForRoute.

.htaccess

代码语言:javascript
复制
<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]

app/config/app.php

代码语言:javascript
复制
'url' => 'http://localhost',

我如何才能改变这一点?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2014-11-29 14:27:42

选项1:使用.htaccess

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

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

代码语言:javascript
复制
<IfModule mod_rewrite.c>
   RewriteEngine On 
   RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

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

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

在根目录中创建一个新文件夹,并移动除公用文件夹之外的所有文件和文件夹。你可以叫它任何你想要的名字。我将使用"laravel_code“。

接下来,将所有内容从public目录移到根文件夹中。它应该会产生类似下面这样的结果:

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

laravel_code/bootstrap/paths.php中找到以下代码行:

代码语言:javascript
复制
'app' => __DIR__.'/../app',
'public' => __DIR__.'/../public',

并将它们更改为:

代码语言:javascript
复制
'app' => __DIR__.'/../app',
'public' => __DIR__.'/../../',

index.php中,找到以下行:

代码语言:javascript
复制
require __DIR__.'/../bootstrap/autoload.php';     
$app = require_once __DIR__.'/../bootstrap/start.php';

并将它们更改为:

代码语言:javascript
复制
require __DIR__.'/laravel_code/bootstrap/autoload.php';     
$app = require_once __DIR__.'/laravel_code/bootstrap/start.php';

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

票数 141
EN

Stack Overflow用户

发布于 2014-10-25 18:46:11

我在Laravel 4.2上尝试过

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

我希望它能起作用

票数 41
EN

Stack Overflow用户

发布于 2016-01-20 00:50:20

请不要与下面我正在使用的其他选项混淆,它对您也很有用。将下面的htacces放入你的根目录中。

代码语言:javascript
复制
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    public/    [L]
    RewriteRule    (.*) public/$1    [L]
</IfModule>

转到您的公共目录并放置另一个htaccess文件,其中包含下面的代码片段

代码语言:javascript
复制
<IfModule mod_rewrite.c>
    RewriteEngine On
    # Removes index.php from ExpressionEngine URLs  
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1 [PT,L]

</IfModule>

它在工作..。!!!

Laravel使用下面的.htaccess

代码语言:javascript
复制
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23837933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档