Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将漂亮URL映射到实际URL(PHP/.htaccess)时包含失败_Php_Apache_.htaccess_Pretty Urls - Fatal编程技术网

将漂亮URL映射到实际URL(PHP/.htaccess)时包含失败

将漂亮URL映射到实际URL(PHP/.htaccess)时包含失败,php,apache,.htaccess,pretty-urls,Php,Apache,.htaccess,Pretty Urls,我第一次尝试创建漂亮的URL,这是我的系统,.htaccess将所有内容映射回index.php,index.php将URL拆分为一个数组,然后使用case语句决定如何继续 .htaccess: RewriteBase / Options +FollowSymLinks RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^.*$ ./index

我第一次尝试创建漂亮的URL,这是我的系统,.htaccess将所有内容映射回index.php,index.php将URL拆分为一个数组,然后使用case语句决定如何继续

.htaccess:

RewriteBase /

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^.*$ ./index.php
index.php:

$request = $_SERVER['REQUEST_URI'];
#split the path by '/'
$params = explode("/", $request);
var_dump($params);
if(!isset($params[1]) || $params[1] == "") {
    require_once('inc/content_default.php');
} else if ($params[1] == "posthandler"){
    require_once('bin/posthandler.php');
} else {
    switch($params[1]) {
        case "dashboard":
            include('inc/content_active.php?ign=' . $params[2]);
        break;
    }
}
问题是,当url为:[domain]/dashboard/AviateX14时,我得到了错误:

Warning: include() [function.include]: Failed opening '/inc/content_active.php?ign=AviateX14' for inclusion (include_path='.:/opt/php-5.3/pear') in /home/u502822836/public_html/index.php on line 92
文件确实存在,问题在于代码,我知道这一点,因为我已经通过放入include('index.php')进行了测试,但仍然失败。该文件确实存在于inc/content_active.php中

我做错了什么,伙计们(

编辑:var_$params的转储是:

array(3) { [0]=> string(0) "" [1]=> string(9) "dashboard" [2]=> string(9) "AviateX14" } 

php
include()
中不能有查询字符串,因为实际上没有请求该字符串。您必须自己在服务器变量中填写参数:

switch($params[1]) {
    case "dashboard":
        $_GET['ign']=$params[2];
        include('inc/content_active.php');
    break;
}

您要求PHP查找名为:
inc/content\u active.PHP?ign=AviateX14
的文件,包括
?ign=AviateX14
部分

解决这一问题的一种方法是:

$_GET['ign'] = $params[2];
include( 'inc/content_active.php' );

但是分配给
$\u GET
,这不是一个很好的做法;您可以做一些更好的事情。

谢谢,这让我进入了页面,但现在的问题是它可能没有应用css或html。htaccess正在将这些URL写回index.php页面,任何方法都可以。您可以看到这里发生了什么:@AviateX14猜测您的css等都是使用相对URL链接的(不是以
/
开头)?如果是这样,您需要将它们更改为绝对URL或向页面标题添加相对URI基:
@AviateX14