Пока что я сделал это:
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
Я надеюсь, что это имеет смысл ...