我已经设置了一个全新的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
答案 0 :(得分:2)
如果全新安装Ubuntu并且安装了apache,很多时候默认情况下都不会启用rewrite
模块。
在终端中运行以下内容
sudo a2enmod rewrite
sudo service apache2 restart
现在,由于启用了重写模块,因此将读取laravel项目公共文件夹中的.htaccess
,并且路由将按预期工作。
我没有必要更改laravel中默认的.htaccess文件中的任何一行 希望这会有所帮助。