如何从 laravel 5 中的 url 中删除 public/index.php?

Posted

技术标签:

【中文标题】如何从 laravel 5 中的 url 中删除 public/index.php?【英文标题】:How to remove public/index.php from url in laravel 5? 【发布时间】:2015-10-11 20:36:20 【问题描述】:

我正在使用 laravel 5,当我在 rackspace 上上传我的项目时遇到一个问题,它在 url 中显示 public/index.php。没有这个,我的项目将无法运行。

请帮帮我。

我的公众活动是这样的:-

<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]
</IfModule>

关于 哈帕塔辛格

【问题讨论】:

Laravel 5 - Remove public from URL 的可能重复项 【参考方案1】:

您可以通过将 /path/to/laravel/public 文件夹本身设置为 Apache/nginx 中的 webroot 而不是 /path/to/laravel 来做到这一点。有了它,以及公共文件夹中的标准.htaccess,您应该能够在没有publicindex.php URL 段的情况下访问您的路由。

【讨论】:

Rackspace 不允许我的域直接重定向到公用文件夹。 你能通过 SSH 连接到服务器并简单地符号链接 httpdocs -&gt; public 吗?即ln -s public httpdocs。假设您的项目不在文档根目录中(我认为这是 Alan 的意思)。【参考方案2】:

从您的公共文件夹中复制您的.htaccess 文件并粘贴到您的根目录中 这段代码在.htaccess:

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

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]

【讨论】:

以上是关于如何从 laravel 5 中的 url 中删除 public/index.php?的主要内容,如果未能解决你的问题,请参考以下文章

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

Laravel 7.x - 如何从 URL 中删除“公共”?

通过删除 Laravel 中的多余字符,从斜杠分隔的 url 中提取参数值

从 url laravel 5.4 中删除公共

如何从 Laravel 5 中的请求中检索 url 参数?

从 URL Laravel 5.3 中删除公共