【问题标题】:how to remove (public) path from URL in laravel8 c-panel?如何从 laravel 8 cpanel 中的 URL 中删除(公共)路径?
【发布时间】:2022-01-25 09:34:53
【问题描述】:

我尝试了很多解决方案来从 URL 中删除(公共)路径但不起作用,我有 laravel8 项目,当访问这样的根路径时(domainName/)它显示:

注意:图片中显示的(root)中的这些文件夹,其中一些,我已经像(node_module,.haccess)一样删除了它,我不知道为什么仍然显示旧的数据还是删除的文件夹?!

当使用这样的(公共路径)(domainName/public/))访问项目时,项目运行正常。

我尝试了很多解决方案,例如创建新 (.htaccess) 并对其进行编辑,但所有解决方案都不起作用并得到下面相同的图片。

根/server.php:

    <?php

/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <taylor@laravel.com>
 */

$uri = urldecode(
    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);

// This file allows us to emulate Apache's "mod_rewrite" functionality from the
// built-in PHP web server. This provides a convenient way to test a Laravel
// application without having installed a "real" web server software here.
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
    return false;
}

require_once __DIR__.'/public/index.php';

public/index.php:

    <?php

use Illuminate\Contracts\Http\Kernel;
use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));

/*
|--------------------------------------------------------------------------
| Check If The Application Is Under Maintenance
|--------------------------------------------------------------------------
|
| If the application is in maintenance / demo mode via the "down" command
| we will load this file so that any pre-rendered content can be shown
| instead of starting the framework, which could cause an exception.
|
*/

if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
    require $maintenance;
}

/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| this application. We just need to utilize it! We'll simply require it
| into the script here so we don't need to manually load our classes.
|
*/

require __DIR__.'/../vendor/autoload.php';

/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request using
| the application's HTTP kernel. Then, we will send the response back
| to this client's browser, allowing them to enjoy our application.
|
*/

$app = require_once __DIR__.'/../bootstrap/app.php';

$kernel = $app->make(Kernel::class);

$response = $kernel->handle(
    $request = Request::capture()
)->send();

$kernel->terminate($request, $response);

public/.haccess:

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

RewriteEngine On

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

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

# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

请帮忙?

【问题讨论】:

  • 你能试试这个吗:stackoverflow.com/a/61310536/3653544
  • 不确定您是否知道明显的解决方案(将 Apache 虚拟主机指向正确的目录,该目录应该是 public 而不是其父目录)。
  • 出于安全原因,您的 Laravel 核心应该位于公共目录之外 将您的域的根文件夹更改为 Laravel 公共文件夹
  • @Kevin 还是同样的问题

标签: php laravel server


【解决方案1】:

只需将新文件 .htaccess 添加到主文件夹并在其中添加此代码:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

将网址更改为您的网站网址

【讨论】:

  • 现在它可以工作了,但所有页面都没有(css,js)@MJubouri
猜你喜欢
  • 2021-08-08
  • 2015-06-09
  • 2017-02-27
  • 2016-06-09
  • 2019-03-30
  • 2013-03-13
  • 2015-04-06
  • 2020-08-31
相关资源
最近更新 更多