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

时间:2015-07-30 09:12:09

标签: php laravel laravel-5.1

我正在建立一个到控制器功能的链接,它位于名为' Admin'的Controller目录的子目录中。当我使用以下代码在菜单栏中建立链接时:

{!! 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&#39 ;? 注意我正在使用名为' www.property.com的虚拟主机'在Ubuntu 15.04上。 这是我的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>

2 个答案:

答案 0 :(得分:0)

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

如果不是这种情况,请在公共文件夹中使用以下内容创建.htaccess:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

如果它仍然无法正常工作,请确保启用Apache中的mod_rewrite模块:)。

答案 1 :(得分:0)

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

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

    <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>