Удобные URL-адреса - перезапись модов и перенаправление php

Пока что я сделал это:

RewriteBase /
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteRule  ^(.*)$ index.php?load=$1 [QSA,L]

Затем на моей индексной странице (в корневом каталоге) Я использую PHP, чтобы определить, какую страницу загружать:

// Swap to variables
    $load = $_GET['load'];

// Home page
    if (!$load || $load == "") { include('home.php'); exit(); }

// Dashboard
    if ($load == "dashboard") { include('dashboard.php'); exit(); }

// About
    if ($load == "about") { include('about.php'); exit(); }

// Username
    $data_array = array(':username' => $load);
    $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?name=$load'); exit(); }

// Redirect to 404 if there are no results
    include('404.php'); exit();

Пока все работает, но пользователи могут загружать фотографии в галерею, и я хочу, чтобы они просматривались следующим образом:

www.mysite.com/[username]/gallery/

Но если вы нужно было ввести его в качестве URL-адреса, который при перезаписи читается как [имя пользователя] / галерея / как один раздел, что означает $ load = [имя пользователя] / галерея , что даст мне «404».

Вероятно, есть лучшее решение для получения желаемых результатов, но я не очень хорошо разбираюсь в .htaccess и переписывании. Я хотел бы добавить, что мне тоже нравится эта перезапись, так как у меня есть подкаталоги с именем signup и вход , в которых тоже есть подкаталоги, но если я перейду по URL-адресу:

www.mysite.com/signup
www.mysite.com/signin

Он игнорирует перезапись и переходит в каталог вместо того, чтобы запускать его через $ load , что я и хочу.

Также следует отметить, что при регистрации учетной записи любое имя пользователя, которое соответствует таким строкам, как панель управления или о и т. Д., Это не позволяет им использовать его, это останавливает имена пользователей и $ load операторы if / else и их включения перепутаны и т. д.

EDIT

Еще я забыл отметить, что поскольку они могут вызывать галерею как угодно, им нужно выполнить поиск чтобы узнать, существует ли эта галерея, например:

www.mysite.com/username/my+first+album

Сначала необходимо проверить, существует ли имя пользователя, затем проверить, существует ли альбом, а затем отобразить его, если он существует, или 404 / перенаправить туда, где его нет. В общем, оба параметра / запроса будут динамическими. Не только это, но и отдельные фотографии в этом альбоме должны работать одинаково, например:

www.mysite.com/username/my+first+album/my+picture

Я надеюсь, что это имеет смысл ...

6
задан no. 2 February 2012 в 01:56
поделиться