Dhi*_*era 2 php apache .htaccess laravel-5 laravel-5.1
我目前已将 laravel 5.1 应用程序托管到我的 1and1.com 服务器,除了根路由(即 www.example.com/server/)外,我的所有路由都面临 404 未找到错误
根路由正在处理 get 请求,但所有其他路由都以 404 not found 的形式出现,一切都在 localhost 中正常工作。
我的应用程序文件夹结构:
-example.com
如您所见,我已删除默认的 laravel 公共文件夹并将内容移至根目录。
我的 .htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_URI} !^ RewriteRule ^(.*)$ /$1 [L] </IfModule>
Run Code Online (Sandbox Code Playgroud)
我的索引.php
<?php
/**
* Laravel - A PHP Framework For Web Artisans
*
* @package Laravel
* @author Taylor Otwell <taylorotwell@gmail.com>
*/
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels nice to relax.
|
*/
require __DIR__.'/bootstrap/autoload.php';
/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/
$app = require_once __DIR__.'/bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);
$response->send();
$kernel->terminate($request, $response);
Run Code Online (Sandbox Code Playgroud)
服务器.php
/**
* Laravel - A PHP Framework For Web Artisans
*
* @package Laravel
* @author Taylor Otwell <taylorotwell@gmail.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__.''.$uri)) {
return false;
}
require_once __DIR__.'index.php';
Run Code Online (Sandbox Code Playgroud)
路线.php
Route::get('/', function(){
echo'test';exit();
});//test
Route::get('/s', function(){
echo'testss';exit();
});//test
Run Code Online (Sandbox Code Playgroud)
现在,如果您看到第一条路线工作正常,但是当我执行 www.example.com/server/s 时,会出现 404 not find 。
如果您的项目迁移到新服务器,则可能会出现这种情况:如果您使用默认项目文档根配置,则默认情况下可能会禁用它读取 .htaccess 文件。您需要将AllowOverride选项从“None”更改为“All”(示例中)选项值/etc/httpd/conf/httpd.conf(如果是centos):
<Directory /var/www/html/public>
...
AllowOverride All
...
</Directory>
Run Code Online (Sandbox Code Playgroud)
然后重新加载服务器以应用更改
sudo service httpd reload
Run Code Online (Sandbox Code Playgroud)
除了亚历克斯的回答之外,如果您正在运行apache,请尝试
sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)
并重新加载阿帕奇
sudo service apache2 reload
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
9813 次 |
| 最近记录: |