index.php / $ 1和index.php有什么区别?$ 1

时间:2014-08-25 15:53:56

标签: php apache url-rewriting

index.php/$1index.php?$1之间的区别是什么?

我已将mod_rewrite设置为on,而我的.htaccess文件如下所示:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On      
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] #<------if change to index.php?$1, it's working!!!
</IfModule>

当我现在访问http://myhost.com/fadf/dsf/时,我收到以下错误:

  

未指定输入文件。

但如果我将index.php/$1更改为index.php?$1,则表明它正在运作。

3 个答案:

答案 0 :(得分:1)

的index.php / $ 1

这是HTTP术语中的“PATH_INFO”,给定一个像

这样的URL
http://example.com/path/script.php/extra/stuff

然后服务器将调用/path/script.php/extra/stuff将被放入$_SERVER["PATH_INFO"]

的index.php?$ 1

这是带有查询字符串的标准http url。给出一个像

这样的网址
http://example.com/path/script.php?foo

然后在脚本中设置$_GET['foo']。它没有价值,但它会存在。

答案 1 :(得分:0)

我认为区别在于index.php / $ 1是base64_encode()而index.php?$ 1是标准的http url。

您也可以查看Base64 variants table

答案 2 :(得分:0)

第一个变体用于url部分除以斜杠,变量用index.php?$ 1用于参数,它们保存在$_REQUEST['somekey'] = "somevalue"中。