删除子目录中的.htaccess

时间:2010-03-04 09:53:39

标签: .htaccess

我在目录中有以下.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文件?

2 个答案:

答案 0 :(得分:2)

我使用过类似的东西。

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

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

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

当然,您可以将最后rewriterule to RewriteRule ^(.*)$更改为https://www.mysite.com/launch [R,L]

将其他rewriterule放在顶部以检查它不是他们可以访问的目录

所以你最终得到这样的东西:

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 可以在浏览器中打开

答案 1 :(得分:1)

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

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