我试图创建一个可以访问多级子文件夹的超链接结构。现在,我可以只使用一级(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')
感谢您的帮助!
答案 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
请注意,您可以使用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)