禁用特定文件夹/路由的 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 令牌?不工作[重复]