从Laravel的URL中删除index.php

时间:2017-09-23 13:40:18

标签: apache .htaccess url mod-rewrite laravel-5.5

我在Linux Mint中使用Laravel 5.5.12。我正在使用LAMP堆栈。我想从网址中删除index.php。我的mod_rewrite apache模块已启用。

我的.htaccess文件位于public文件夹中,其中包含以下代码。

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    Options +FollowSymLinks

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    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>

我将Laravel根文件夹中的server.php重命名为index.php,并将.htaccess文件从/ public目录复制到Laravel根文件夹。但它没有用。

我将代码放在.htaccess文件

下面
<IfModule mod_rewrite.c>

  # Turn Off mod_dir Redirect For Existing Directories
  DirectorySlash Off

  # Rewrite For Public Folder
  RewriteEngine on
  RewriteRule ^(.*)$ public/$1 [L]

</IfModule>

但这不起作用。

在这方面有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

将您更改的任何内容重置为默认值。

在您的apache虚拟主机配置中,确保DocumentRoot正确(它将类似于/ var / www / html / laravelproject / public)。

您不需要对公用文件夹中的.htaccess文件进行任何更改,因为它会处理重写url以删除index.php。但是,在某些环境中,我不得不添加

RewriteBase /laravelproject

到公共文件夹中的.htaccess。

答案 1 :(得分:1)

我在这里找到了答案:

https://ma.ttias.be/remove-index-php-from-the-url-in-laravel/

总而言之,我将以下内容添加到.htaccess文件中,该文件位于现有index.php条目的正下方:

RewriteRule ^index.php/(.+) /$1 [R=301,L]