Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 如何删除';父目录';Apache目录列表中根文件夹的链接_.htaccess_Directory_Webserver_Apache - Fatal编程技术网

.htaccess 如何删除';父目录';Apache目录列表中根文件夹的链接

.htaccess 如何删除';父目录';Apache目录列表中根文件夹的链接,.htaccess,directory,webserver,apache,.htaccess,Directory,Webserver,Apache,如何允许在Apache中为特定(根)文件夹及其子文件夹列出目录,但不显示指向该根文件夹父文件夹的链接。当用户在子文件夹中时,将显示“父目录”链接以导航到其父文件夹,但当用户在根文件夹中时,我需要删除/隐藏此“父目录”链接,以便用户无法移动到该“根”层次结构之上。您可以通过将以下内容添加到.htaccess文件中来隐藏“父目录”链接: IndexIgnore .. IndexHeadInsert "<style type=\"text/css\">a[href=\"/absolute

如何允许在Apache中为特定(根)文件夹及其子文件夹列出目录,但不显示指向该根文件夹父文件夹的链接。当用户在子文件夹中时,将显示“父目录”链接以导航到其父文件夹,但当用户在根文件夹中时,我需要删除/隐藏此“父目录”链接,以便用户无法移动到该“根”层次结构之上。

您可以通过将以下内容添加到.htaccess文件中来隐藏“父目录”链接:

IndexIgnore ..
IndexHeadInsert "<style type=\"text/css\">a[href=\"/absolute/path/to/index/root/parent/\"] {display: none;}</style>"
Options +Indexes

IndexIgnore "_index_header.html" "_index_footer.html"

HeaderName "/absolute/path/to/root/index/_index_header.html"
ReadmeName "/absolute/path/to/root/index/_index_footer.html"

IndexOptions +SuppressHTMLPreamble
但这将为每个目录隐藏它

如果您有权访问httpd配置,则可以尝试从每个服务器上下文中删除该指令:

<DirectoryMatch "^/(?!var/www/your-root/subfolder)">
...
</DirectoryMatch>

...

只要在更高的文件夹中没有IndexIgnore指令,它就应该对您有效。

我刚刚遇到了同样的问题,这是第一个搜索结果,所以我想我会分享我的解决方案。在我的例子中,我没有访问httpd配置的权限,所以我采用了不同的方法

因为我不会维护索引目录树,所以我需要一个解决方案,该解决方案可以只存在于索引根中,而不需要对其子目录有任何特定的了解。但是,它确实使用到索引根的绝对路径,因此如果父文件夹结构发生了很大变化,它可能不适合您

我想到的是,当“父目录”链接指向索引根的父目录时,使用CSS URL属性选择器隐藏该链接。它会留下一个空白行,但至少不像用户单击父目录太多次时遇到的“403禁止”错误那样可怕

理论上,修复应该非常简单,只需在索引根的.htaccess文件中添加一行即可:

IndexIgnore ..
IndexHeadInsert "<style type=\"text/css\">a[href=\"/absolute/path/to/index/root/parent/\"] {display: none;}</style>"
Options +Indexes

IndexIgnore "_index_header.html" "_index_footer.html"

HeaderName "/absolute/path/to/root/index/_index_header.html"
ReadmeName "/absolute/path/to/root/index/_index_footer.html"

IndexOptions +SuppressHTMLPreamble
_index_header.html文件:

<!DOCTYPE html>
<html>
    <head>
        <title>title</title>
        <style type="text/css">
            a[href="/absolute/path/to/index/root/parent/"] {display: none;}
        </style>
    </head>
    <body>
    </body>
</html>

标题
a[href=“/absolute/path/to/index/root/parent/”{display:none;}
_index_footer.html文件:

<!DOCTYPE html>
<html>
    <head>
        <title>title</title>
        <style type="text/css">
            a[href="/absolute/path/to/index/root/parent/"] {display: none;}
        </style>
    </head>
    <body>
    </body>
</html>

(请注意,CSS选择器指向索引根的父级)

可以在我测试过的所有最新浏览器版本(FF、IE、Chrome、Safari、Opera)中使用,也可以在IE7中使用


另外,既然您已经经历了创建这些文件的所有麻烦,那么您还不如让索引更时髦一些。在CSS的基础上,您可以使用一系列选项来调整内容。

似乎您提出的问题不对

如果您的目的是阻止用户访问上面的目录,那么删除链接不会为您解决任何问题,因为任何人都可以简单地从URL中删除最后一个目录

例如,如果您的子文件夹是
/var/www/secret/hive/subfolder
,并且您的
DocumentRoot
设置为
/var/www
,并且您共享链接
http://your.example.com/secret/hive/subfolder
,任何人仍然可以访问
http://your.example.com/secret/
http://your.example.com/secret/hive
即使没有“父文件夹”链接

你能做的是:

  • 将“empty”index.html放在“subfolder”上方的每个文件夹中。然后,Apache将提供该服务 文件而不是列表,这样用户就不会知道“机密”或“配置单元”中有什么了

  • 禁用“子文件夹”上方每个文件夹中的列表。阿帕奇随后将拒绝展示 这样用户就不会知道“秘密”或“蜂巢”中有什么了

然而,如果用户能够猜出文件名,他们仍然可以组合一个有效的URL,如
http://your.example.com/secret/password.txt
如果运气好(和/或尝试),他们仍然可以获得一些非公开信息

你应该做的是:

  • DocumentRoot
    设置为
    /var/www/secret/hive/subfolder

  • 或者(更好)保留DocumentRoot,但将所有非公共内容移出
    /var/www


所以
http://your.example.com/
将只显示公共信息,用户甚至无法(HTTP)请求任何上述内容。

有一个解决此问题的有效方法,通过JQuery检查url路径名。 只需将此代码添加到.htaccess文件的顶部(显然,我们不能在此处分隔段落行):


IndexHeadInsert“$(document).ready(function(){if(document.location.pathname.split('/'))。length我的解决方案如下:

<Directory "/www"> Options +Indexes IndexIgnore .. _other </Directory>

<DirectoryMatch "^/www/download/.{1,}"> IndexIgnoreReset ON IndexIgnore _other </DirectoryMatch>
选项+索引索引索引
IndexIgnoreReset ON IndexIgnore\u other
有关更多说明。。。 让我们从目录中的.htaccess文件(即存在于目标目录中的.htaccess文件)控制这些内容。它可能需要以下配置:

# STRONG HTACCESS PROTECTION
<Files ~ "^.*\.([Hh][Tt][Aa])">
 order allow,deny
 deny from all
</Files>

<IfModule mod_autoindex.c>
            Options Indexes FollowSymLinks 
            IndexIgnore ".." #LOOK AT THIS LINE     
            IndexOptions FancyIndexing
            IndexOptions VersionSort
           # IndexOptions HTMLTable
            IndexOptions FoldersFirst
            IndexOptions IconsAreLinks
            IndexOptions IgnoreCase
           # IndexOptions SuppressDescription
            AddDescription "Last generated backup result" backuplog.txt
            IndexOptions SuppressHTMLPreamble
            IndexOptions XHTML
            IndexOptions IconWidth=32
            IndexOptions IconHeight=32
            IndexOptions NameWidth=*
            IndexOrderDefault Descending Name
            HeaderName /index-style/header.html
            ReadmeName /index-style/footer.html
        </ifModule>
#强大的访问保护
命令允许,拒绝
全盘否定
选项索引跟随符号链接
看这一行
范欣德兴指数
索引选项版本排序
#索引选项HTMLTable
索引选项FoldersFirst
索引选项图标重新链接
指数选择忽略案例
#索引选项抑制描述
AddDescription“上次生成的备份结果”backuplog.txt
索引选项抑制HtmlStreamble
索引选项XHTML
索引选项IconWidth=32
索引选项IconHeight=32
索引选项名称宽度=*
IndexOrderFault降序名称
HeaderName/index style/header.html
ReadmeName/index style/footer.html

对于隐藏父目录链接,
IndexIgnore
应该按照上面的代码编写。上面的代码片段已经用Apache 2.4.18进行了测试。

只是不可能。你可以编写自己的php脚本来完成目录列表。看不到任何其他方法。但是我不会介意。链接不应该在那里,但它不像一个当你点击它时,任何可怕的事情都会发生。