-1

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

AddDefaultCharset UTF-8
RewriteEngine On
RewriteBase /

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

非常感谢!

4

1 回答 1

2

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

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 文件的字符集,它是当请求的内容为text/htmltext/plain. 同样,除非您是文本或 html 内容实际上是其他一些编码(例如 *shift_jis*),否则在您的 htaccess 文件中包含它并没有什么坏处。

于 2013-04-09T00:54:51.533 回答