gpt4 book ai didi

Apache .htaccess 将 index.html 重定向到 root,为什么是 FollowSymlinks 和 RewriteBase?

转载 作者:行者123 更新时间:2023-12-04 16:26:31 26 4
gpt4 key购买 nike

为了重定向所有 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 /
  • 谁能这么好心地向我解释为什么我必须添加这些最后几行,并向我解释一下它们的含义和作用?
  • 不添加这些行是否存在潜在的安全风险?

  • 非常感谢,

    最佳答案

    推荐理由:

    建议加Options +FollowSymlinks因为必须为 mod_rewrite 启用符号链接(symbolic link)跟踪工作,并且有可能,虽然您可能被允许打开它,但主服务器配置并未启用它。我怀疑必须遵循符号链接(symbolic link)的原因是因为模块对 apr_stat() 进行了多次调用。 ,看起来它需要遵循符号链接(symbolic link)才能在所有情况下获取文件信息。

    至于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。这对于试图查看您的内容的人来说是个问题,但它绝对不会给他们任何扩展的机会来利用您的代码。

    未设置 RewriteBase如果您在其中一个 .htaccess 文件中设置了不正确配置的规则集,则可能会暴露您的 Web 内容的路径,但我不确定是否有任何理由认为存在安全风险。

    关于Apache .htaccess 将 index.html 重定向到 root,为什么是 FollowSymlinks 和 RewriteBase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3771175/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com