В первый раз, когда я попытался создать красивые 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-адрес: [домен] / панель инструментов / 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_dump из $ 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_active.php?ign=AviateX14
, в том числе ?ign=AviateX14
часть.
Один из способов это сделать:
$_GET['ign'] = $params[2];
include( 'inc/content_active.php' );
Но это не очень хорошая практика назначать $_GET
; Есть лучшие вещи, которые вы могли бы делать.