Php 为什么相同的.htaccess命令在本地主机和服务器上的工作方式不同?

Php 为什么相同的.htaccess命令在本地主机和服务器上的工作方式不同?,php,apache,.htaccess,url-rewriting,Php,Apache,.htaccess,Url Rewriting,我有以下用于重定向php页面的.htaccess命令 RewriteRule ^(.*)$ index.php/$1 [L] 此代码在localhost中工作。它在web服务器中不工作。但当代码被稍微修改时,它在服务器中工作 RewriteRule ^(.*)$ index.php?/$1 [L] 为什么会发生这种情况?之所以会发生这种情况,是因为您可能正在运行不同的PHP版本。我相信这被认为是一个PHP错误已经有一段时间了,但请不要引用我的话。您可能正在本地主机上运行早期版本的PHP(比如

我有以下用于重定向php页面的.htaccess命令

RewriteRule ^(.*)$ index.php/$1 [L]
此代码在localhost中工作。它在web服务器中不工作。但当代码被稍微修改时,它在服务器中工作

RewriteRule ^(.*)$ index.php?/$1 [L]

为什么会发生这种情况?

之所以会发生这种情况,是因为您可能正在运行不同的PHP版本。我相信这被认为是一个PHP错误已经有一段时间了,但请不要引用我的话。您可能正在本地主机上运行早期版本的PHP(比如5.2.X),在web服务器上运行更新版本的PHP。这不是
.htaccess
问题。这是PHP。你只需要知道根据版本使用哪一个

这个答案也可以作为参考


第一个url使用称为路径信息的内容。第二个url使用查询字符串。我假设您正在使用某种框架?不,我正在为我的核心php项目进行url重写,可能会重复吗?当我更改规则时,我必须使用parse\u url函数,这样我就不会通过$\u get method获取任何值。好的,您不会将键值对作为查询字符串传递,因此
$\u get
不包含任何有用的内容。如果要使用
?url=/$1
,则可以使用
$\u GET[“url”]