我的 laravel 安装似乎有问题,我试图在您键入 domainname.com/laravel 而不是显示目录时将 url 路由到公用文件夹。
但是当我放
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
进入 laravel 目录中的 .htaccess;它只是想出了这个。
请告诉我如何解决这个问题..因为我真的不知道。
最佳答案
听起来您正在尝试做的是将 Laravel 托管在您网站的子目录中。大多数时候,Laravel 应用程序托管在网站的根目录中,即 yourdomain.com
。但是,您希望您的 Laravel 应用程序显示在 yourdomain.com/laravel
中。正确的?首先,警告:
This is NOT the recommended way to host a Laravel app
但是,如果您真的想将内容移动到子目录中,可以从这里开始。
在 public/
中创建子目录并将核心 Laravel 文件移动到那里
默认情况下,干净的 Laravel 安装在 public/
文件夹中有以下文件:
public/
- .htaccess
- favicon.ico
- index.php
- robots.txt
- web.config
创建一个子目录并将这些文件移动到其中,例如如果您的子目录名为 laravel/
那么您的新结构将如下所示:
public/
- laravel/
- .htaccess
- favicon.ico
- index.php
- robots.txt
- web.config
请务必不要更改 Laravel 附带的 .htaccess
文件的内容。否则您的网站肯定无法运行。
更新 index.php
以便它仍然可以找到 Laravel 核心
在 public/laravel/index.php
中,你需要更新所有看起来像这样的行:
require __DIR__.'/../bootstrap/autoload.php';
看起来像:
require __DIR__.'/../../bootstrap/autoload.php';
应该有两行需要更改。
此时,如果有人访问 yourdomain.com/laravel
,他们会看到 Laravel 欢迎屏幕。您还可以按照通常在 app/Http/routes.php
中的方式创建路由。例如,如果您的路由文件如下所示:
Route::get('/', function () {
return view('welcome');
});
Route::get('/hiya', function() {
return 'hiya!';
});
然后访问 yourdomain.com/laravel/hiya
的人会在屏幕上看到“hiya”这个词。
这可能会给你带来很多问题
如前所述,Laravel 通常不打算从子目录运行,因此以我描述的方式使用它可能会导致很多问题和意外行为。
但是,您仍然可以在 public/
文件夹中托管静态文件,并像对待任何网站一样为它们提供服务。
关于php - .htaccess - 不路由到公用文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34258117/