我想创建一个系统,读取用户提供的URL,然后将其切片到数组,这样就可以从结果中输出不同的页面。
让我为此
创建一个示例伪代码//Url in borwser is http://example.com/user/frank
//this is index.php file in examplepage.com
//folders user and user/frank do not exist
$url = read_url();
//$url[0] = 'example.com';
//$url[1] = 'user';
//$url[2] = 'frank';
if($url[1]=='user' && $url[2]=='frank'){
include_frank_page():
}else if($url[1]=='user' && $url[2]=='john'){
include_john_page():
}else{
include_user_error_page():
}
我怎么能做这样的事情?我知道WordPress会做这样的事情,但我找不到代码的一部分。这是否与它创建的.htacces
文件有关?
如果您要向我提供任何描述或教程的链接,我将非常感谢。
修改
好的,FallbackResource /index.php
正是我所需要的,但是存在502代理错误。
我的.htacces
看起来像这样:
FallbackResource /test/index.php
index.php
test
echo $_SERVER['REQUEST_URI'];
这两个都在我的example.com
根目录中的'test'文件夹中。出于显而易见的原因,我只想在此文件夹中执行此操作。
当我输入example.com/test/aaa
结果为'/ test / aaa'时 - 确定。
当我输入example.com/test/aaa/bbb
结果为'/ test / aaa / bbb'时 - 确定。
当我输入example.com/test/
时,会出现“502代理错误”。我怎么能避免这种情况?
编辑2:
此外,当我在test2
文件夹中创建文件夹test
并输入example.com/test/test2
时 - 还有502代理错误。
答案 0 :(得分:1)
您可以在.htaccess
中实现一个“前端控制器”,将所有请求路由到单个文件,例如。 index.php
。 (这就是WordPress的作用)。
然后,在index.php
中,您检查网址并加载相应的内容。
例如,在.htaccess
:
FallbackResource /index.php
这将通过文档根目录中的index.php
路由对不存在的文件的所有请求。 (WordPress使用mod_rewrite实现。)
然后,在index.php
中,您可以执行以下操作:
// Actual HTML pages stored in a (hidden) subdirectory called "/pages"
$pageDir = $_SERVER['DOCUMENT_ROOT'].'/pages';
$pages = array (
'/home' => 'home.php',
'/about' => 'about.php',
'/contact => 'contact.php',
);
// $_SERVER['REQUEST_URI'] contains the URL of the request
$url = $_SERVER['REQUEST_URI'];
if (isset($pages[$url])) {
include($pageDir.'/'.$pages[$url]);
} else {
// NB: The "error-404.php" page will need to return the appropriate HTTP status
include($pageDir.'/error-404.php');
}