通过index.php超链接多级子目录?结构体

时间:2015-08-16 17:27:39

标签: php html hyperlink

我试图创建一个可以访问多级子文件夹的超链接结构。现在,我可以只使用一级(php)目录访问我的超链接,例如index.php?content=about(而' about'是about.php)。

我想要做的是为具有多级子目录的大型网站创建文件系统,如下例所示, index.php?blog/category/process/。我不知道是否有符号替换html符号/(目录的斜杠)但是PHP目录。我尝试了不同的方法来访问多级子目录中的文件,例如放入? (问号)。这都是假设的实验。如果我使用斜杠,例如blog/category/process/filename.php',我会收到 404 Not Found 错误。

在function.php中有以下PHP脚本,它从URL获取内容,如果没有内容,它设置默认值,如果有内容,它会对黑客数据进行清理:

function loadContent($where, $default='') {
$content = filter_input(INPUT_GET, $where, FILTER_SANITIZE_STRING);
$default = filter_var($default, FILTER_SANITIZE_STRING);
$content = (empty($content)) ? $default : $content;

if ($content) {
$html = include 'content/'.$content.'.php';
return $html;
  }
}

function loadIncludes($where, $default='includes/') {

$includes = filter_input(INPUT_GET, $where, FILTER_SANITIZE_STRING);
$default = filter_var($default, FILTER_SANITIZE_STRING);

if($includes) {

$html = include 'includes/'.$includes.'.php';
    return $html;
  }
}

指向文档内的链接&blog;类别/进程/文件名.php'显示(之前是#404; 404错误'之前,但是标题和css文件不起作用。它们没有被选中。

请注意:
我的网站结构是
标题(index.php拾取了一个标题?)
内容(多个内容= filename.php)
页脚

index.php看起来像这样:

<?php   
require ('includes/function.php');
require ('includes/init.php');  /* init.php picks up the header */
?>

<div class="clearboth"></div>

<!-- ********  HOMEPAGE  **********  -->
<?php loadContent('content', 'home'); ?>

<div class="clearboth"></div>

<!-- ********  FOOTER  **********  -->  
<?php include ('content/footer.php');  ?>

我通过index.php找到了多级子目录结构的解决方案?也会选择CSS,如下所示:

<a href="index.php?content=blog/category/process/filename">
(leave out the extension .php followed after 'filename')

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

<?php
/* FOLDERS STRUCTURE

$_SERVER['DOCUMENT_ROOT'] = C:/Server/www/music; // YES Windows :)
THIS FILE = folders.php

C:/Server/www/music
C:/Server/www/music/files/
C:/Server/www/music/files/folder1/
C:/Server/www/music/files/folder1/folder2/myfile.jpeg

*/

$root = $_SERVER['DOCUMENT_ROOT'];
$requestURI = $_SERVER['REQUEST_URI'];
$startFolder = '/files/';
preg_match('/\?/', $requestURI) ? list($requestURI, $fileToFind) = explode('?', $_SERVER['REQUEST_URI']) : exit('Bad request'); 
$file = $root.$startFolder.$fileToFind;    

if(file_exists($file)){

    //YOUR CODE 
}
else {

    header("HTTP/1.0 404 Not Found");

}

// Usage = http://music.com/folders.php?/folder1/folder2/myfile.jpeg
?>

阅读我以前问过的那些问题。我希望它会对你有所帮助

  

.htaccess : Redirect all http requests to one file whitout 404 resp. code

     

Use PHP to rewrite URLS?

请注意,您可以使用http标头header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");header($_SERVER["SERVER_PROTOCOL"]." 200 Ok");来播放文件是否存在

激活你的想象力......

答案 1 :(得分:0)

我通过index.php在多级子目录的超链接结构上找到了解决方案?它也会获取CSS,并且不会发出404错误,如下所示:

<a href="index.php?content=blog/category/process/filename">
descriptive header
</a>

(注意:记得在'filename'之后省略扩展名.php)