index.php/$1
和index.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
,则表明它正在运作。
答案 0 :(得分:1)
这是HTTP术语中的“PATH_INFO”,给定一个像
这样的URLhttp://example.com/path/script.php/extra/stuff
然后服务器将调用/path/script.php
,/extra/stuff
将被放入$_SERVER["PATH_INFO"]
这是带有查询字符串的标准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"
中。