С помощью Aatch и Sally и нескольких результатов поиска по маршрутизации URL я получил следующий метод для достижения того, чего я добивался, поэтому я решил поделиться им со всеми на тот случай, если кто-нибудь захочет его использовать....
Прежде всего я должен упомянуть, что сайт, над которым я работаю, находится в 2 подкаталогах корневой папки mysite.com/sub/folder/index.php
, поэтому для массивов я начинаю с [3]
С учетом сказанного мой файл .htaccess выглядит следующим образом:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . sub/folder/index.php [QSA,L]
Насколько мне известно, он получает все, что написано после sub/folder/
, и перенаправляет страницу обратнооднако для index.php он маскирует URL-адрес в адресной строке.
Единственный раз, когда он игнорирует это, это если подкаталог действительно существует.Так, например, у меня есть папка /sub/folder/signup/
, если я должен был напечатать ее в адресной строке, поскольку каталог существует, то вы не будете перенаправлены в файл index.php, а отправлены в запрошенный каталог, как обычно.
Теперь в моем файле index.php (помните, что я начинаю с $ uri [3], потому что я в подпапках!)
$uri = $_SERVER['REQUEST_URI']; // This brings back /sub/folder/foo/bar/test/
$uri = explode("/", $uri); // Separate each one
$var_one = $uri[3]; // foo
$var_two = $uri[4]; // bar
$var_three = $uri[5]; // test
switch ($var_one) {
case '':
case 'home':
include('home.php');
exit();
break;
case 'signout':
case 'logout':
include('signout.php');
exit();
break;
case 'dashboard':
case 'dash':
include('dashboard.php');
exit();
break;
}
// By Username
$data_array = array(':username' => $var_one);
$select_account = $connect->prepare("SELECT * FROM `users` WHERE `username` = :username");
$select_account -> execute($data_array);
$account_amount = $select_account->rowCount();
if ($account_amount > 0) { include('profile.php'); exit(); }
// By Account ID
$data_array = array(':id' => $var_one);
$select_account = $connect->prepare("SELECT * FROM `users` WHERE `id` = :id");
$select_account -> execute($data_array);
$account_amount = $select_account->rowCount();
if ($account_amount > 0) { include('profile.php'); exit(); }
include('page_not_found.php');
Случаи переключения просты, если URLэто: / sub / folder / dashboard /, затем отображается dashboard.php.Если ни один из случаев не совпадает, мы могли бы посмотреть на профиль.Сначала проверяется, может ли это быть имя пользователя, если оно существует, то отображается страница профиля просмотра.Затем он проверяет, может ли это быть уникальный идентификационный номер для этого профиля, и выполняет ту же проверку.
Наконец, если ни по одному из них не возвращается никаких результатов, то отображается страница 404, а ненайденная страница.
Если это была страница профиля, то в файле profile.php я могу запустить проверку на $var_two
и посмотреть, загрузили ли они фотоальбом под этим именем, например, /sub/folder/joe/holiday/
, еслида, затем запустите запрос, чтобы получить все это, если нет, отобразить сообщение / перенаправление или что-то еще.
Затем, если их еще больше, скажем конкретное изображение ($var_three
) в этой папке ($var_two
), например /sub/folder/joe/holiday/beach/
- затем запустите его через аналогичный запрос, показывающий результаты.
Возможно, это не лучший метод, но он довольно простой и все работает, как мне бы тоже хотелосьЯ не могу пожаловаться.