php解决index of,php – 如何重定向Apache“Index of …”页面?

我试图通过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"

Options -Indexes -MultiViews +Includes

AllowOverride None

Order allow,deny

Allow from all

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文件:

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 "

Index of ".getcwd()."

\n
  • ";

echo "\n

Parent Directory";

foreach (fileindex(".") as $i) {

echo "\n

".htmlentities($i, ENT_QUOTES|"ENT_HTML401", "UTF-8", true)."";

}

echo "

";

}

既然你告诉我你不能使用index.php,你应该使用Apache将目录重定向到wherever / other.php?directory = path并从那里开始工作.

在.htaccess中,解决方案就是

RewriteCond %{REQUEST_URI} -d

RewriteRule ^(.*)$wherever/other.php?directory=$1 [L]

然而,最值得注意的是,您需要稍微编辑PHP代码以适应作为$_GET参数的文件夹,而不是getcwd()和fileindex(“.”).

标签:apache,php,redirect

来源: https://codeday.me/bug/20190630/1333217.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以通过修改网站的配置文件来实现将首页index.php更改为www.php。具体来说,您需要在配置文件中找到类似于“DirectoryIndex index.php”的行,并将其更改为“DirectoryIndex www.php”。这将告诉服务器在访问网站时默认加载www.php作为首页。 ### 回答2: 要将PHP框架中的首页文件从index.php更改为www.php,可以按照以下步骤进行: 1. 打开框架的根目录,通常是项目的文件夹。 2. 找到名为.htaccess的文件,如果不存在,则创建一个新的.htaccess文件。 3. 在.htaccess文件中,添加以下代码来进行URL重写: ``` RewriteEngine On RewriteRule ^www.php$ index.php [L] ``` 这段代码使用了Apache的URL重写规则,将www.php重写为index.php。这意味着当用户访问www.php时,实际上是执行了index.php文件的内容。 4. 保存.htaccess文件,并上传到服务器上的框架根目录中。 现在,当用户访问www.php时,框架将调用index.php文件的内容,并在浏览器中显示相应的结果。请注意,此方法假设您正在使用Apache服务器,并且已启用了URL重写功能。 如果您使用其他Web服务器或框架,则可能需要采用不同的方法来实现这个目标。请参考相应的文档或搜索相关资源来了解如何在您的环境中更改首页文件名。 ### 回答3: 要把PHP框架的首页index.php换成www.php,首先需要知道使用的是哪个具体的框架。不同的PHP框架可能有不同的配置方法,下面以较为常见的框架Laravel为例来说明。 在Laravel框架中,可以通过配置路由来实现首页的更改。打开项目根目录下的`routes`文件夹,找到`web.php`文件。在该文件中可以看到默认的路由定义,其中包含了首页的路由: ``` Route::get('/', function () { return view('index'); }); ``` 上述代码表示访问根目录时(即首页),会调用`index`视图文件。要实现将首页改为www.php,只需要修改该路由定义中的URL路径即可。例如修改为: ``` Route::get('/www.php', function () { return view('index'); }); ``` 保存并刷新浏览器后,首页的URL就变为了www.php。 需要注意的是,修改首页路由后,可能需要相应地修改其他相关代码中对首页URL的引用,以确保整个应用的功能正常运行。 总结起来,把PHP框架的首页index.php换成www.php的主要步骤是找到对应的路由配置文件,修改其中的首页路由定义并保存,再相应地修改其他相关代码中对首页URL的引用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值