推荐理由:
建议您添加Options +FollowSymlinks,因为必须启用符号链接跟踪才能使mod_rewrite 工作,并且有可能虽然您可能被允许打开它,但主服务器配置并未启用它.我怀疑必须遵循符号链接的原因是因为模块对apr_stat() 进行了多次调用,看起来它需要遵循符号链接才能在所有情况下获取文件信息。
至于RewriteBase,通常没有必要。文档goes on about it,但由于大多数人的文件确实 存在于某个地方的DocumentRoot 下,因此它通常仅在您进行外部重定向并且使用目录相对URL 时才有用。为了说明我的意思,请考虑以下几点:
RewriteEngine On
RewriteRule ^redirect index.html [R,L]
对 example.com/redirect 的请求将导致外部重定向到 example.com/full/path/to/web/root/index.html。这样做的原因是在它处理重定向之前,mod_rewrite 重新附加了当前目录路径(这是RewriteBase 的默认值)。如果您将RewriteBase 修改为/,则路径信息将替换为该字符串,因此对 index.html 的请求现在将是对 /index.html 的请求.
请注意,无论RewriteBase 的值如何,您也可以在替换上显式执行此操作:
RewriteEngine On
RewriteRule ^redirect /index.html [R,L]
...例如,按预期工作。但是,如果您有许多需要共同基础的规则并且正在目录之间移动,或者您的内容不在根目录下,那么在这种情况下适当地设置 RewriteBase 会很有用。
不使用它们的风险:
不指定Options +FollowSymlinks 绝对没有安全风险,因为如果你不指定并且它不是由主服务器配置设置的,mod_rewrite 将始终返回 403 Forbidden。这对于试图查看您的内容的人来说是个问题,但绝对不会让他们有更多机会利用您的代码。
如果您在其中一个 .htaccess 文件中设置了不正确配置的规则,则不设置 RewriteBase 可能会暴露您的 Web 内容的路径,但我不确定是否有任何理由认为存在安全风险。