.htaccess htaccess-如何仅允许访问其重定向/directoryindex中的子文件夹?

.htaccess htaccess-如何仅允许访问其重定向/directoryindex中的子文件夹?,.htaccess,.htaccess,有点让人困惑 我在GoDaddy的网站结构如下: /public_html /folder1/ /index.html /folder2/ /index.html /restrictedfolder /secretfolder 我在“public_html”根目录中创建了一个.htaccess文件,其中包含以下内容: DirectoryIndex /folder1/index.html http://example.com 如果我去mysite.com,它会引导我进入fo

有点让人困惑

我在GoDaddy的网站结构如下:

/public_html
 /folder1/
  /index.html
  /folder2/
   /index.html
 /restrictedfolder
 /secretfolder
我在“public_html”根目录中创建了一个.htaccess文件,其中包含以下内容:

DirectoryIndex /folder1/index.html http://example.com
如果我去mysite.com,它会引导我进入folder1并正确显示我的主页。我的URL(指向用户)仍然是mysite.com,这就是我想要的。我遇到的问题是: -如果我转到example.com/folder1(这仍然显示我的index.html) -如果我转到example.com/restrictedfolder(这仍然显示我的index.html) -如果我转到example.com/secretfolder(这仍然显示我的index.html)

不过,我确实希望example.com/folder2起作用

从这个

DirectoryIndex指令设置要查找的资源列表, 当客户端通过指定/ 在目录名的末尾。本地url是的(%-编码)url 服务器上与请求目录相关的文档;它是 通常是目录中的文件名。可能需要几个URL 给定,在这种情况下,服务器将返回第一个 发现。如果不存在任何资源并且设置了Indexes选项, 服务器将生成自己的目录列表

简而言之,如果你把:

DirectoryIndex index.html
这意味着,无论何时,只要请求指向像这样的目录索引
example.com/directory/
以及
example.com
服务器都将查找
index.html
文件,否则目录列表将出现,除非您通过其他选项阻止

在您的情况下,对您的网站的请求通常会转到
/folder1/index.html
,但当请求转到目录服务器时,会再次收到该请求,因为您在目标路径前面添加了
/
,所以无论何时对目录索引的请求都只针对
/folder1/index.html

如果将其更改为
DirectoryIndex folder1/index.html
,您会注意到,当请求转到目录索引时,即使有索引页,也会出现目录列表,因为服务器将查看该目录中的
folder1/index.html

如果您只是尝试在index.html中具有不同内容的任何目录中添加相同的文件夹名
folder1/index.html
,例如
restrictedfolder
,那么当您请求
example.com/restrictedfolder/
时,您将看到真正的路径
/restrictedfolder/folder1/index.html
restrictedfolder/folder1/
中index.html的内容

要解决此问题,您可以使用
mod_rewrite
folder1
设置为网站根目录,而无需更改URI

此外不要这样放置主机名

DirectoryIndex/folder1/index.htmlhttp://example.com

此指令仅接受本地uri

如果要添加其他页面,也可以执行类似操作:

DirectoryIndex   index.html index.php
因此,如果目录中没有
index.html
,服务器将查找
index.php
等等