为什么我的CodeIgniter项目需要进行此调整才能在我的实时服务器上运行?

时间:2016-05-21 09:44:43

标签: .htaccess codeigniter

我在部署网站时遇到了问题。我的Angular部分收到404错误,但我的index.php模板加载正常。这是我的.htaccess:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

我在这里找到了解决方案:Codeigniter - no input file specified

?之后添加index.php

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

我对.htaccess有基本的了解,但我似乎可以找到解释。

感谢。

1 个答案:

答案 0 :(得分:1)

在第一种情况下,如果没有?,请求的参数将保存在PATH_INFO中。

在第二种情况下,使用?,这是最常见的QUERY STRING变量。

它们都是$_SERVER超级全局的一部分,但它们是由HTTP服务器设置的。这一切都取决于Apache / Nginx / Lighttpd /无论配置如何。并不总是设置PATH_INFO:依靠此变量并不安全。

但是当路由在没有?的网址中传递时,也可以使用REQUEST_URI来阅读。软件(您的案例中的框架)需要能够阅读它。

拥有相同的开发和生产环境非常重要。由于您无法在共享托管环境中更改此配置(而您可以在虚拟或专用服务器上执行所需操作),因此应首先检查生产配置,然后调整本地配置以便轻松部署代码。