Laravel 5.4 - 路由不起作用

时间:2017-03-07 13:50:48

标签: php linux apache .htaccess

我已经设置了一个全新的ubuntu mini安装并安装了apache2和PHP。 (也尝试了最新稳定的ubuntu) 我还安装了一些模块,其中包括laravel installation documentation中列出的模块:

OpenSSL PHP Extension
PDO PHP Extension
Tokenizer PHP Extension
Mbstring PHP Extension
XML PHP Extension

我还安装了:

libapache2-mod-php git curl,php-curl

sudo apt-get install libapache2-mod-php
sudo apt-get install curl
sudo apt-get install php-curl
sudo apt-get install git

现在我从windows的apache服务器复制了一个完整的laravel项目。 然后我执行了

chmod 775 -R *

chown www-data:www-data -R *

但是,路线无效。

e.g。 http://192.168.2.100/selenium/public/start

应该显示我的起始页,而不是:

  

未找到:在此服务器上找不到请求的URL / selenium / public / start。

所以我研究并在stackoverflow上找到了this

答案:

Try to navigate to your expected route prepend it with /index.php/, in
your case: http://localhost/laravel/index.php/users. 
If it works (no 404) then you problem is with the Rewrite Module configuration of
Apache HTTP, you should follow the next steps.

所以我试着按照建议调用我的页面:

http://192.168.2.100/selenium/public/index.php/start

那很有用。因此,重写模块配置存在问题。

他/她建议在RewriteBase /directory/

中的RewriteEngine On行下添加public/.htaccess

所以我将public/.htaccess更改为此并重新启动了apache2:

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

    RewriteEngine On
    RewriteBase /selenium/

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

然而,路线仍然无效。 我还能尝试什么?

系统信息

Apache版本:

Server version: Apache/2.4.7 (Ubuntu)
Server built:   Jul 15 2016 15:32:47

PHP版本:

PHP 7.0.16-4+deb.sury.org~trusty+1 (cli) (built: Mar  2 2017 13:50:00) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.0.16-4+deb.sury.org~trusty+1, Copyright (c) 1999-2017, by Zend Technologies

Linux版本:

  

Linux linux 3.13.0-110-generic#157-Ubuntu SMP Mon Feb 20 11:55:25 UTC   2017 i686 i686 i686 GNU / Linux

1 个答案:

答案 0 :(得分:2)

如果全新安装Ubuntu并且安装了apache,很多时候默认情况下都不会启用rewrite模块。 在终端中运行以下内容

sudo a2enmod rewrite

sudo service apache2 restart  

现在,由于启用了重写模块,因此将读取laravel项目公共文件夹中的.htaccess,并且路由将按预期工作。

我没有必要更改laravel中默认的.htaccess文件中的任何一行 希望这会有所帮助。