我在部署网站时遇到了问题。我的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有基本的了解,但我似乎可以找到解释。
感谢。
答案 0 :(得分:1)
在第一种情况下,如果没有?
,请求的参数将保存在PATH_INFO
中。
在第二种情况下,使用?
,这是最常见的QUERY STRING
变量。
它们都是$_SERVER
超级全局的一部分,但它们是由HTTP服务器设置的。这一切都取决于Apache / Nginx / Lighttpd /无论配置如何。并不总是设置PATH_INFO
:依靠此变量并不安全。
但是当路由在没有?
的网址中传递时,也可以使用REQUEST_URI
来阅读。软件(您的案例中的框架)需要能够阅读它。
拥有相同的开发和生产环境非常重要。由于您无法在共享托管环境中更改此配置(而您可以在虚拟或专用服务器上执行所需操作),因此应首先检查生产配置,然后调整本地配置以便轻松部署代码。