
Bug编译狮
在 Laravel 中,默认情况下,/public 目录是应用程序的根目录,它包含了静态文件(如 CSS、JavaScript 和图像)以及动态生成的内容(如路由和控制器输出)。如果你想将 public 目录重命名为其他名称,可以通过以下步骤来实现:
1. 修改 web.php
首先,你需要修改 routes/web.php 文件,以确保所有请求都通过 /custom-public 目录进行处理。
// routes/web.php
use IlluminateSupportFacadesRoute;
Route::get('/custom-public/{path}', function ($path) {
return view('welcome', ['path' => $path]);
})->where('path', '.*');
在这个例子中,我们使用了 where 方法来匹配所有路径,并将其传递给视图。
2. 修改 index.php
接下来,你需要修改 public/index.php 文件,以确保所有请求都通过 /custom-public 目录进行处理。
// public/index.php
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
$kernel = $app->make(IlluminateContractsHttpKernel::class);
$response = $kernel->handle(
new IlluminateHttpRequest(
$request->all(),
$request->method(),
'/',
[],
[],
$request->server()
)
);
$response->send();
在这个例子中,我们将路由路径从 /public 改为 /custom-public。
3. 创建一个新的路由
为了测试新路径是否正常工作,你可以创建一个新的路由:
// routes/web.php
use IlluminateSupportFacadesRoute;
Route::get('/custom-public/custom-route', function () {
return view('custom-view');
});
4. 创建一个新的视图
最后,创建一个新的视图文件 resources/views/custom-view.blade.php:
<!-- resources/views/custom-view.blade.php -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Custom Route</title>
</head>
<body>
<h1>Welcome to Custom Route!</h1>
</body>
</html>
总结
通过以上步骤,你已经成功地将 Laravel 的 public 目录重命名为 custom-public。这样,你就可以访问新的路径并查看相应的视图。

黑板Bug讲师
介绍
Laravel 是一个广泛使用的 MVC 框架,用于 PHP,鼓励良好的应用程序结构,并提供了一组工具来开发 Web 应用程序。在 Laravel 开发过程中,常见的需求之一是如何为 Laravel 应用程序中的“/public”目录设置自定义路径。在这个教程中,我们将探索如何为 Laravel 应用程序中的“/public”目录设置自定义路径。
理解 /public 目录
在标准的Laravel应用程序中,/public目录作为文档根目录,其中存储着index.php文件和其他资产,如样式表、JavaScript文件和图片等。它是所有Laravel应用程序请求的入口点,旨在通过浏览器直接访问唯一的一个目录。
.htaccess 文件
如果你在使用Apache服务器上托管Laravel应用,设置“/public”目录的自定义路径的方法之一涉及修改.htaccess文件。.htaccess文件允许您将请求从您的服务器重定向到应用程序中的目标位置。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/custom_path/
RewriteRule ^(.*)$ /custom_path/$1 [L,NC]确保.htaccess文件位于项目根目录下,且将’custom_path’替换为您新‘公共’目录的名称。
服务器配置
另一种设置自定义的“/public”路径的方法是在您的Web服务器上配置虚拟主机。
对于Apache,您需要提供更多信息以便我能进行翻译。
<VirtualHost *:80>
DocumentRoot "/path/to/your/application/custom_path"
ServerName your-domain.com
<Directory "/path/to/your/application/custom_path">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>对于Nginx:
server {
listen 80;
server_name your-domain.com;
root /path/to/your/application/custom_path;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php-version-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}请记得将 ‘/path/to/your/application/custom_path’ 替换为您的新 ‘public’ 目录的实际路径,以及 ‘your-domain.com’ 替换为您自己的域名名称。
修改Index.php
在配置好Web服务器后,您必须更新位于新“公共”目录中的“index.php”文件,以反映路径结构的变化。
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';确保路径与应用程序的目录结构相匹配,考虑包括‘bootstrap’在内的相关目录。
调整配置
一些资产,例如编译的CSS或JavaScript文件,也可能需要反映新的目录结构。您可能需要修改Laravel Mix配置。
mix.setPublicPath('custom_path');
这告诉Laravel Mix 将编译后的资产放置在您新的自定义‘公共’目录中。您可以使用视图中的asset()或mix()辅助函数来包含这些资产。
使用艺匠命令自动化
如果你经常需要调整“公共”目录结构,可以考虑创建一个artisan命令来简化这个过程。以下是一个示例artisan命令,它自动化了设置自定义公共路径的过程:
php artisan make:command SetCustomPublicPath请提供需要更新的命令、规则或配置的具体信息,以便我为您提供相应的编程指导。
重要考虑因素
在更改“公共”目录时,考虑安全影响,并确保仔细审查和测试服务器配置。
结论。
在Laravel应用程序的/public目录中自定义可以解决特定服务器需求或部署策略的问题。通过遵循本教程中的方法,开发人员可以成功修改默认结构以满足其需要。

长工码奴1523
要在 Laravel 中为 ‘/public’ 目录设置自定义路径,请按照以下步骤操作:
- 首先,打开您的 Laravel 项目的
app/Http/Middleware/VerifyCsrfToken.php文件。 - 在文件顶部添加如下代码:
namespace AppHttpMiddleware;
use Closure; use IlluminateSupportFacadesApp; use IlluminateSupportFacadesRoute;
class VerifyCsrfTokenMiddleware { /**
- Handle an incoming request.
- @param IlluminateHttpRequest $request
- @param Closure $next
-
@return mixed */ public function handle($request, Closure $next) { if (App::environment(‘local’) && ! $this->isProduction()) { return $next($request); }
return redirect()->route('login');}
private function isProduction() { // 在这里添加检查生产环境的逻辑 return false; // 或者根据实际情况返回 true } }
-
在您的项目目录中创建一个新的文件夹,例如
production. 这里将用于存放生产环境下的配置和数据。 -
将
production文件夹添加到项目的storage目录下(如果尚未创建):cd <your_project_path> mkdir production mv storage/production/ <your_storage_directory> -
现在您可以在 Laravel 中使用
/public目录中的文件了,无需担心它们会出现在生产环境中。 -
如果需要在生产环境中访问
/public目录中的文件,请确保您的应用程序已启用生产模式,并且在生产环境下运行。这可以通过修改.env文件中的APP_ENV=production来实现。 -
关于验证 CSRF token 的具体示例代码:
<?php
namespace AppHttpControllers;
use IlluminateFoundationTestingWithoutMiddleware;
use IlluminateFoundationTestingDatabaseTransactions;
/**
* @group middleware
*/
class VerifyCsrfTokenController extends Controller
{
use WithoutMiddleware, DatabaseTransactions;
protected $middleware = [
'VerifyCsrfTokenMiddleware',
];
public function __construct()
{
parent::__construct();
$this->middleware->add(new VerifyCsrfTokenMiddleware());
}
}
现在您可以像之前一样在 Laravel 应用程序中使用 /public 目录中的文件,而不用担心这些文件会被误认为是生产环境中的内容。

