【问题标题】:Apache .htaccess to redirect index.html to root, why FollowSymlinks and RewriteBase?Apache .htaccess 将 index.html 重定向到 root,为什么 FollowSymlinks 和 RewriteBase?
【发布时间】:2010-09-22 15:59:05
【问题描述】:

为了将所有somefolder/index.html(以及somefolder/index.htm)重定向到somefolder/,我在Apache .htaccess 文件中使用了这个简单的重写规则:

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*\/index\.html?\ HTTP/
RewriteRule ^(.*)index\.html?$ "/$1" [R=301,L]

这很好用!

但在Google groups,他们建议也添加:

Options +FollowSymlinks 
RewriteBase / 
  1. 谁能给我解释一下为什么我必须添加这些最后几行,并稍微解释一下它们的含义和作用?

    李>
  2. 不添加这些行是否存在潜在的安全风险?

非常感谢,

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    推荐理由:

    建议您添加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 内容的路径,但我不确定是否有任何理由认为存在安全风险。

    【讨论】:

    • +1 感谢您花时间解释这一切。我希望我能给你更多的支持。我想知道 RewriteBase 是否可能是解决我提出的另一个问题的解决方案:stackoverflow.com/questions/3242322/…
    • @Marco Demaio:没问题!至于你的其他问题,我今天晚些时候再看一下,看看有没有什么建议。
    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 2010-12-27
    • 2021-12-20
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 2011-08-02
    相关资源
    最近更新 更多