如何摆脱'index.php'在我的laravel 5.1虚拟主机链接


How to get rid off 'index.php' in my laravel 5.1 links on Virtual Host

我正在制作一个链接到控制器的功能驻留在名为'Admin'的控制器目录的子目录中。当我在菜单栏中使用以下代码创建链接时:

{!! HTML::link('/admin', 'Admin') !!}  // www.property.com/admin

它不起作用,但是如果我在'/admin'前面加上'index.php/admin',像这样:

{!! HTML::link('index.php/admin', 'Admin') !!}  // www.property.com/index.php/admin

可以正常工作。有什么问题吗?我怎样才能摆脱添加'index.php'之前我的每个链接像'admini'?注意我在Ubuntu 15.04上使用名为'www.property.com'的虚拟主机。这是我的AdminController' ' '

<?php
namespace App'Http'Controllers'Admin;
use Illuminate'Http'Request;
use App'Http'Requests;
use App'Http'Controllers'Controller;
class AdminController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        return view('admin.index');
    }
?>

这是我的路由文件

Route::resource('/', 'HomeController');
Route::resource('/admin', 'Admin'AdminController');
下面是.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]
</IfModule>

下面是虚拟主机文件代码:

<VirtualHost *:80>
    ServerAdmin m.khuramj@live.com
    ServerName laravelproperty.com
    ServerAlias www.laravelproperty.com
    DocumentRoot /var/www/property-project/public
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

如果您使用的是Apache,请确保公用文件夹中的.htaccess在那里。

如果不是这样,在公共文件夹中创建一个.htaccess,内容如下:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

如果仍然不工作,请确保Apache中的mod_rewrite模块是启用的:)。

花了几个小时后,我找到了这个问题的解决方案。虽然是一个矿工,但花了很多时间。

在我的虚拟主机文件中添加如下代码:

    <Directory /var/www/property-project/public/>
        AllowOverride All
    </Directory>

你可以比较这个和上面问题中给出的虚拟主机代码的区别。

<VirtualHost *:80>
    ServerAdmin m.khuramj@live.com
    ServerName laravelproperty.com
    ServerAlias www.laravelproperty.com
    DocumentRoot /var/www/property-project/public
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/property-project/public/>
        AllowOverride All
    </Directory>
</VirtualHost>