.htaccess代码,这个例子是好的编码实践吗?

时间:2013-04-09 00:42:20

标签: .htaccess

现在我的脚被正式弄湿了.htaccess我有一个新问题。在我收集书签的许多教程中,作者建议将这段代码放在.htaccess文件的开头:

AddDefaultCharset UTF-8
RewriteEngine On
RewriteBase /

我可以理解避免解析第一行问题的问题,所以我想知道的是,除了RewriteEngine On之外,其他两行是好的做法还是仅仅添加膨胀?

非常感谢!

1 个答案:

答案 0 :(得分:2)

RewriteBase /行有时用于解析目标和/或RewriteRule模式中的相对URI。例如,如果htaccess文件位于/foo目录中,并且您的规则可能如下所示:

RewriteEngine On
RewriteBase /foo/
RewriteRule ^bar$ index.php?bar [L]

此处,规则的目标index.php?bar是相对URI, base 会被添加到其前面,从而生成URI:/foo/index.php?bar。当规则的目标是相对的时,apache将猜测URI是文件路径还是URL路径,并且它并不总是正确猜测。使用RewriteBase /foo/,apache知道/foo/index.php是一个URL路径。可能存在重写基础与其所在文件夹不匹配的情况,但结果仍然相同。它充当规则中相对URI的URI基础。

除非由于某种原因您希望某些相对URI实际映射到文件路径,否则不会受到伤害。

AddDefaultCharset 指令不适用于htaccess文件的字符集,它是请求内容类型为{{{}时网络服务器为请求提供的响应的一部分1}}或text/html。再说一遍,除非你的文字或html内容实际上是一些其他编码(例如* shift_jis *),否则在你的htaccess文件中有这个没有坏处。