禁用特定文件夹/路由的 Laravel 路由

Posted

技术标签:

【中文标题】禁用特定文件夹/路由的 Laravel 路由【英文标题】:Disable Laravel Routing for a specific folder/route 【发布时间】:2013-08-07 04:06:27 【问题描述】:

我想知道如何在 laravel 上禁用特定目录的路由?

我希望在 laravel 上运行我的主要网站(我正在将其重写到框架中),但我想保留我当前的论坛软件!问题是,当 laravel 看到“localhost/forums”时,它会寻找论坛控制器或路由。我希望它简单地转到文字 /forums 目录..?

【问题讨论】:

发布您的routes.php 文件 @Andreyco 你能帮忙吗? 【参考方案1】:

我必须在 public/.htaccess 中添加这一行

RewriteCond %REQUEST_URI !^/foldername

在此行之前(重定向尾部斜杠)

RewriteRule ^(.*)/$ /$1 [L,R=301]

【讨论】:

像魅力一样工作!!谢谢 这个有效。确保您正在更新正确目录的 .htaccess【参考方案2】:

对于 Laravel 4,这些解决方案都不适合我。我最终通过放置解决了它

RewriteRule ^(directory-name) - [L]

之前

RewriteRule ^(.*)/$ /$1 [L,R=301]

在公共/.htaccess 中

【讨论】:

【参考方案3】:

您需要在您的 .htaccess 文件中进行排除。在将所有内容发送到index.php 的规则上方,添加以下内容:

RewriteCond %REQUEST_URI !^/forums

任何以/forums 开头的内容都不会发送到 Laravel。

(当然,这是假设您使用的是 Apache。)

【讨论】:

对我来说,/public 中的所有文件都可以正常加载,而无需对 .htaccess 进行任何更改。问题是 /public/forum 之类的东西不再自动加载该路径中的索引,它必须由 /public/forum/index.php 访问,并且上述规则也无济于事。知道如何解决这个问题吗?【参考方案4】:

根据您的routes.php 文件,它应该可以工作。

    你根本没有捕捉到forum URL 如果 'forum' 目录/文件存在,则 URL 不会重写为 Laravel 的 index.php

routes.php(我在测试用例中使用了这个)

Route::get('slug', function($slug)
    return $slug;
);

文件结构

|- app
|- public
|--- index.php // Laravel's one
|--- forum // directory for forum files
|------ index.php // Forum's one
....

使用这种结构,URL 不会被重写为 Laravel 的路由 index.php 文件。 如果我重命名/删除 forum 文件夹 URL 会被重写。

它对你有用吗?

【讨论】:

【参考方案5】:

我需要在 Laravel 5.7 上排除 /billing url 所以这种方式对我有用:

Route::redirect('/billing', '/billing');

当结算位于: My billing folder location

【讨论】:

【参考方案6】:

我正在使用 nginx,它对我有用:

location /your_folder      
    try_files $uri $uri/ /your_folder/index.php?$args;

【讨论】:

以上是关于禁用特定文件夹/路由的 Laravel 路由的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 5.2 中禁用特定路由的 Web 中间件

在 laravel 5.4 中为某些路由禁用 csrf 令牌?不工作[重复]

Laravel5.2默认会给路由增加Web中间件,怎么禁用掉

Laravel - 限制特定 API 路由的速率

Laravel 在资源路由控制器的特定路由上应用中间件

通过 Route::getRoutes() laravel 方法获取特定路径的路由