这是一种基于URL包含页面的可怕方法吗? (使用mod_rewrite
到index.php
)
if($url === '/index.php/'.$user['username']) {
include('app/user/page.inc.php');
}
// Upload *
else if($url === '/index.php/'.$user['username'].'/Upload') {
include('app/user/upload.inc.php');
}
// Another page *
else if($url === '/index.php/AnotherPage') {
include('page/another_page.inc.php');
}
我正在使用$_GET['variables']
到mod_rewrite
^(.+)$ index.php?user=$1 [NC]
以及其他几个基页。但是,这些仅仅是基础文件的第一个参数。上面的if / else示例也区分大小写,实际上并不好。
您对此有何看法?
我如何mod_rewrite
index.php
的这些第二/第三等论点?
这完全是SEO与上述例子不兼容吗?
答案 0 :(得分:0)
我本身并不完全理解你的问题 你是什么意思“这些第二/第三等争论”?
您可以采用更易读/可维护的方式执行相同的步骤,如下所示:
$urls = array(
'/index.php/'.$user['username'] => 'app/user/page.inc.php',
'/index.php/'.$user['username'].'/Upload' => 'app/user/upload.inc.php',
'/index.php/AnotherPage' => 'page/another_page.inc.php'
);
$url = $urls[$url];
如果'.inc.php'是一致的,你可以从数组的每个项中删除它并在最后添加它:
$url = $urls[$url].'inc.php'
沿着相同的路线,您可以反向编写数组(切换上面数组中的键和值)并使用preg_grep进行搜索。这将允许您搜索URL而不区分大小写,并允许使用通配符。
$url = key( preg_grep("/$url/i", $urls));
有关实时互动示例,请参阅Here。
请注意,效率低得多,但对于通配符匹配,这是最好的方法 (对于大多数页面来说,效率低下是宜居的。)