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