php – 如何重定向Apache“Index of …”页面?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 如何重定向Apache“Index of …”页面?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1923字,纯文字阅读大概需要3分钟。
内容图文
我试图通过Apache的autoindex module使用PHP在Apache中实现经过身份验证的文件列表.
我想象的方式是让Apache运行一个PHP脚本作为header file.我已经设法让Apache为头文件正确运行PHP,它也检测到登录cookie.但似乎Apache将头文件作为单独的请求运行,这意味着如果我尝试从PHP发送重定向头,则它不会运行.
我的(简化的)Apache配置:
DocumentRoot "/path/to/files_root"
Alias /~extra "/path/to/extra-data"
<Directory "/path/to/extra-data">
Options -Indexes -MultiViews +Includes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
IndexOptions FancyIndexing HTMLTable SuppressHTMLPreamble
AddType text/html .php .html .htm
AddOutputFilter INCLUDES .php
AddHandler application/x-httpd-php .php
HeaderName "/~extra/HEADER.php"
我的HEADER.php文件:
<?php
if ( ! my_validate_cookie_function()) {
header('HTTP/1.1 302 Found');
header('Location: http://login.example.com/');
exit(1);
}
因此,标头不会发送到浏览器.设置Apache环境viariables似乎不起作用,因为它们在HEADER.php完成执行的那一刻就已经过去了.
cookie本身是加密的,因此需要PHP来验证它.
有什么建议如何达到预期的效果?
解决方法:
您应该使用< body>中的以下代码将index.php文件插入到您的目录中.标签.
function fileindex($folder) {
if (!is_dir($folder)) {
return array(); //empty if not a folder
}
$list = scandir($folder);
array_shift($list); //first two values are always . & ..
array_shift($list);
return $list;
}
/* auth stuff here */
if (is_auth) {
echo "<h1> Index of ".getcwd()."</h1>\n<ul>";
echo "\n<li><a href=\"/\">Parent Directory</a>";
foreach (fileindex(".") as $i) {
echo "\n<li><a href=\"".$i."\">".htmlentities($i, ENT_QUOTES|"ENT_HTML401", "UTF-8", true)."</a></li>";
}
echo "</ul>";
}
既然你告诉我你不能使用index.php,你应该使用Apache将目录重定向到wherever / other.php?directory = path并从那里开始工作.
在.htaccess中,解决方案就是
RewriteCond %{REQUEST_URI} -d
RewriteRule ^(.*)$wherever/other.php?directory=$1 [L]
然而,最值得注意的是,您需要稍微编辑PHP代码以适应作为$_GET参数的文件夹,而不是getcwd()和fileindex(“.”).
内容总结
以上是互联网集市为您收集整理的php – 如何重定向Apache“Index of …”页面?全部内容,希望文章能够帮你解决php – 如何重定向Apache“Index of …”页面?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。