我正在CodeIgniter中构建一个PHP应用程序.CodeIgniter将所有请求发送到主控制器:index.php.但是,我不喜欢index.php在URI中看到.例如,http://www.example.com/faq/whatever将路由到http://www.example.com/index.php/faq/whatever.我需要一种可靠的方法让脚本知道它的地址是什么,因此它将知道如何处理导航.我mod_rewrite按照CodeIgniter文档使用过.
规则如下:
RewriteEngine on
RewriteCond $1 !^(images|inc|favicon\.ico|index\.php|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)
通常,我会检查php_self,但在这种情况下,它总是index.php.我可以得到它REQUEST_URI,PATH_INFO等等,但我想,以决定这将是最可靠的.有谁知道(或不知道在哪里可以找到)之间的真正区别PHP_SELF,PATH_INFO,SCRIPT_NAME,和REQUEST_URI?谢谢你的帮助!
注意:我必须添加空格,因为SO看到了下划线,并且由于某种原因使其变为斜体.
更新:修复了空格.
没有可能访问.htaccess我发现自己陷入了创造性的僵局.对我来说没有mod_rewriting.不过,我希望能够做到这样的好事:
http://www.example.com/Blog/2009/12/10/
http://www.example.com/Title_Of_This_Page
Run Code Online (Sandbox Code Playgroud)
我有什么选择?
回答答案:
http://www.example.com/index.php/Blog/是一种已知的技术,但我不喜欢它.显示php就这么说了.我正在编写一个 PHP 文件,但我不知道当链接位于同一文件但具有不同 ID 时创建链接的最佳方式是什么。我的意思是我有一个名为的文件test.php,它包含类似以下内容的内容:
if ($id == "") {
echo "<a href='".$_SERVER['PHP_SELF']."?id=test'>Try the test page</a>";
} else if ($id == "test") {
echo "Here is the testing content with various information!";
}
Run Code Online (Sandbox Code Playgroud)
我想知道更安全的代码哪个更好:
$_SERVER['PHP_SELF']?id=test或test.php?id=test。
我知道它现在具有相同的目的,但如果我更改文件名$_SERVER['PHP_SELF']?id=test似乎更好,因为它仍然指向同一个文件。
但我想确切地知道哪个更安全。