【发布时间】:2017-07-27 18:24:06
【问题描述】:
我已经设置了一个全新的 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 *
但是,路由不起作用。
例如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
那行得通。所以Rewrite Module Configuration有问题。
他/她建议在public/.htaccessRewriteEngine 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 linux 3.13.0-110-generic #157-Ubuntu SMP Mon Feb 20 11:55:25 UTC 2017 i686 i686 i686 GNU/Linux
【问题讨论】:
-
这个“未找到”消息是来自 Apache 还是来自 Laravel?如果是Apache的消息,看我对stackoverflow.com/q/42610062/1741542的回复
-
我建议查看是否启用了 mod 重写以及您的 apache 设置是否允许在该文件夹中使用 htaccess。(检查 AllowOverride 指令)
标签: php linux apache .htaccess