找到默认网站主页的名称

时间:2014-06-11 14:17:59

标签: php

我想要一些PHP代码,以便能够识别其运行的域的主页(因此代码是可移植的)。我可以在常见的默认主页列表上执行file_exists,但是可以找到例如index.php和index.html

由于某些系统将default.html,home.html和其他系统识别为有效默认值,因此我可能最终得到几个。服务器有一个优先级列表,例如,如果有index.php和index.html,服务器将优先考虑index.php - 但不一定,htaccess可以更改优先级,甚至将someotherfile.html设置为默认值。

如果包含我的代码的页面是主页,我可以$_SERVER['PHP_SELF'],但不是。

=================

基于一种建议的方法,我尝试使用此代码:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo(substr($response, 0, curl_getinfo($ch,CURLINFO_HEADER_SIZE)));
?>  

但标题不包含文件名

HTTP/1.1 200 OK Server: nginx Date: Wed, 11 Jun 2014 19:08:09 GMT Content-Type: text/html Transfer-Encoding: chunked Connection: keep-alive X-Powered-By: PleskLin

在不同服务器上的类似结果

HTTP/1.1 200 OK Date: Wed, 11 Jun 2014 18:39:47 GMT Server: Apache X-Powered-By: PHP/5.4.29 Transfer-Encoding: chunked Content-Type: text/html

====================

原因是我需要一个网站上所有页面的列表(不包括服务器上的任何页面,但没有链接到,所以我不能只浏览目录)。我已经达成了妥协,并最终列出了example.com/(无论它发现了什么)并说,index.htm,如果有来自其他页面的链接,它可能是(可能)相同的东西。我想我可以通过比较文件大小或时间戳等方法来消除重复。

2 个答案:

答案 0 :(得分:0)

这可以帮助您确定运行PHP文件的路径:

$script_path = realpath(dirname(__FILE__));

但是您需要确保将其放在网站根级别的文档中,以获得准确的路径值。因此,根据您网站的结构,您可以将这行代码放在index.phpindex.php将通过include_oncerequire_once加载的公共配置文件中

那说,为了最好和最好最可靠的可移植性最好只在配置文件中设置一个基本路径变量&amp;只需在您的网站从一个位置移动到另一个位置时进行更改。像这样:

$BASE_PATH = '/var/www/path/to/site/root/';

然后,当您需要为代码加载文件时,只需设置如下路径:

include_once($BASE_PATH . 'lib/some.cool.thing.php');

这样,$BASE_PATH只是在公共配置文件中的一个位置设置。而且您知道在将代码从一个设置迁移到另一个设置时,您只需要更改一个设置。

答案 1 :(得分:0)

如果你需要页面的名称,我可以想到这个:

向同一个域发出curl请求,获取响应标头并检查&#34; Content-Location&#34;标题字段。

$url="www.domain.com"    
$defaults = array(
        CURLOPT_POST => 1,
        CURLOPT_HEADER => 0,
        CURLOPT_URL => $url,
        CURLOPT_FRESH_CONNECT => 1,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_FORBID_REUSE => 1,
        CURLOPT_TIMEOUT => 4,
    );

    $ch = curl_init();
    curl_setopt_array($ch, ($options + $defaults));
    $header_size = curl_getinfo($ch,CURLINFO_HEADER_SIZE);
    $result = curl_exec($ch);
    $header = substr($result, 0, $header_size);
    var_dump($header);
    curl_close($ch);

检查是否有你需要的东西......