【问题标题】:Remove .htaccess in subdirectory删除子目录中的 .htaccess
【发布时间】:2010-03-04 09:53:39
【问题描述】:

我在一个目录中有以下 .htaccess 文件:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://www.mysite.com/launch [R,L] 
DirectoryIndex index.html

基本上,这会强制 mysite.com/launch 下的所有页面使用https://www.mysite.com/launch/index.html 的 SSL 版本。

但是,对于 /launch 下的单个子目录,我需要能够在不重定向用户的情况下允许访问。

例如,如果他们导航到 www.mysite.com/launch/files/photos,那么他们应该能够访问 /photos 目录中的各个文件。

我是使用 /photos 目录中的另一个 .htaccess 文件,还是修改 /launch 目录中现有的 .htaccess 文件?

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    我用过类似的东西。

    RewriteRule ^(?!intranet/|cv/)(.+)$ somedirname/$1 [L]
    RewriteRUle ^$ somedirname/ [L]
    

    所以当 mysite.com/intranet 被调用时,它会进入文件夹 Intranet 或者当 mysite.com/cv 被调用时,它会进入 cv 文件夹

    但在这种情况下,当没有调用子目录时,它会强制进入 'somedirname'

    当然你可以把最后一个rewriterule to RewriteRule ^(.*)$改成https://www.mysite.com/launch [R,L]

    将另一个重写器放在最上面以检查它不是他们可以访问的目录

    所以你最终会得到这样的结果:

    RewriteCond %{HTTPS} !=on
    RewriteRule ^(?!subdir1/|subdir2/)(.+)$ launch/$1 [L]
    RewriteRule ^(.*)$ https://www.mysite.com/launch [R,L] 
    DirectoryIndex index.html
    

    现在 www.mysite.com/subdir1 和 www.mysite.com/subdir2 可以在浏览器中打开

    【讨论】:

      【解决方案2】:

      只需在规则上方添加另一个RewriteCond,如下所示:

      # Put this above the existing RewriteCond
      RewriteCond %{REQUEST_URI} !launch/files/photos
      ...
      

      【讨论】:

        猜你喜欢
        • 2012-06-25
        • 1970-01-01
        • 1970-01-01
        • 2019-10-03
        • 2011-10-09
        • 1970-01-01
        • 1970-01-01
        • 2020-01-31
        • 2021-06-24
        相关资源
        最近更新 更多