php - php Laravel 5.4路由不工作

  显示原文与译文双语对照的内容
141 4

我安装了一个全新的ubuntu迷你安装并安装了apache2和 PHP 。在我已经安装了最新的稳定ubuntu之后,我还安装了一些 moduls,其中包括在 Laravel 安装文档中列出的moduls:

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 复制了一个完整的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的

从答案中:

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

这个操作很有用,所以重写模块配置有一个问题。

他建议在 public/.htaccess 下的RewriteEngine On 下添加 RewriteBase/directory/

所以我把 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: 55 -generic #157-Ubuntu SMP Mon 20:: 25:/Linux

时间:原作者:0个回答

149 0

很多时候,如果它是一个新的安装Ubuntu和你安装 apache,rewrite 模块不会被默认启用。在终端中运行以下命令

sudo a2enmod rewrite
sudo service apache2 restart 

现在已经经启用了重写模块,将读取来自 .htaccess Laravel public的的,路由将作为预期的工作。

我不需要更改 Laravel 中默认。htaccess文件中的任何行。
希望这有帮助

原作者:
...