Hasta ahora me han hecho esto:Usuario - mod de reescritura y php redirecciones
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?load=$1 [QSA,L]
Entonces en mi página de índice (en el directorio raíz) Estoy usando PHP para determinar la página de carga:
// 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();
Todo hasta ahora está funcionando pero los usuarios pueden subir fotos a una galería y quiero que sean vistos como tan:
www.mysite.com/[username]/gallery/
pero si debes escribir eso como la URL que reescribe [username]/gallery/
como una sección que significa $load = [username]/gallery
que me daría un '404'.
Probablemente haya una mejor solución para obtener los resultados deseados, pero no soy demasiado bueno con .htaccess y reescritura. Me gustaría añadir que me gusta esta reescritura demasiado ya que tengo subdirectorios llamados signup
y signin
el que ambos tienen subdirectorios en ellos también, pero si voy a la URL:
www.mysite.com/signup
www.mysite.com/signin
Se ignora la reescritura y va al directorio en lugar de ejecutarlo a través de las declaraciones $load
que es lo que quiero.
Además, tenga en cuenta que, en el registro de una cuenta, cualquier nombre de usuario que coincide con cadenas como dashboard
o about
etc no les permiten utilizar, esto deja de nombres de usuario y la $load
if/else declaraciones y su incluye ser mezclado hasta etc.
EDITAR
Otra cosa que me olvidé de tener en cuenta es, ya que pueden llamar a la galería lo que quieran, que tiene que hacer una búsqueda para ver si existe esa galería, así por ejemplo:
www.mysite.com/username/my+first+album
Primero debería verificar que el nombre de usuario existe, luego verificar que el álbum existe, luego mostrarlo si lo hace o 404/redireccionar a donde sea que no lo haga. Entonces, básicamente, ambos parámetros/consultas serán dinámicos. No sólo eso, pero luego las fotos individuales dentro de ese álbum tienen que funcionar de la misma, por ejemplo:
www.mysite.com/username/my+first+album/my+picture
espero que tenga sentido ...
He consultado un poco sobre este enrutamiento de URL, nunca había oído hablar de él, pero he encontrado una buena manera de usar fragmentos de él, así como algunas ideas de las respuestas que tanto tú como Sally me han dado . Estoy a punto de escribirlo en una respuesta para mostrar cómo tengo las cosas en funcionamiento. +1 por tu ayuda! – Joe