【发布时间】:2016-06-30 07:36:05
【问题描述】:
那里
我刚刚在 laravel 5.2 中创建了一个新项目。然后我已经成功地从我在 Windows 中的项目的 url 中删除了 public/index.php 它工作正常。
但是,虽然我在 var/www/html 中的 ubuntu 中将相同的项目复制为 /var/www/html/myproject。并启用 apache2 rewrite_mode。但是如果不将 index.php 放在 url 中,它就不起作用。它仅在没有公共的情况下有效。
http:://localhost/myproject/index.php/cms(它工作正常)但是
http:://localhost/myproject/cms(它不起作用)??? .有什么建议吗???
我的代码是
route.php
define( "PREFIX", "cms" );
Route::get(PREFIX . '/login', 'Auth\AuthController@getLogin');
没关系 我也已经将所有文件从公用文件夹剪切到根目录并将 index.php 文件编辑为
require __DIR__.'/../bootstrap/autoload.php';
由
require __DIR__.'/bootstrap/autoload.php';
和
$app = require_once __DIR__.'/../bootstrap/app.php';
通过
$app = require_once __DIR__.'/bootstrap/app.php';
.htaccess as
<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}]
</IfModule>
【问题讨论】:
-
似乎 mod_rewrite 没有加载,或者
AllowOverride All不在 httpd.conf 中,因此 .htaccess 文件被忽略。确保为您的虚拟主机或默认主机配置设置AllowOverride。 -
谢谢。解决了!!!
标签: php apache .htaccess laravel ubuntu-14.04