【问题标题】:How to get rid off 'index.php' in my laravel 5.1 links on Virtual Host如何摆脱虚拟主机上我的 laravel 5.1 链接中的“index.php”
【发布时间】:2015-07-30 09:12:08
【问题描述】:

我正在创建一个指向控制器功能的链接,该链接位于名为“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”的虚拟主机。 这是我的管理员控制器 ```

<?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 配置中加载 mod_rewrite 模块?

标签: php laravel laravel-5.1


【解决方案1】:

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

如果不是这种情况,请在公用文件夹中创建一个 .htaccess,其中包含以下内容:

Options +FollowSymLinks
RewriteEngine On

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

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

【讨论】:

  • 感谢 LeShadow!是的,我正在使用 apache 并且 .htaccess 也在那里。我在帖子中添加 .htaccess 代码。所以你可以检查一下
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-02
    • 2016-07-23
    • 2016-05-16
    • 2015-10-21
    • 1970-01-01
    • 2015-06-05
    • 2017-07-18
    • 1970-01-01
    相关资源
    最近更新 更多