texto strip_tags remove quitar para limpiar funcion etiquetas ejemplo php mysql apache mod-rewrite vanity-url

php - remove - strip_tags wordpress



Crear URL vanity en una configuraciĆ³n LAMP (4)

¿Cuál es la mejor manera de crear URLs vanity de usuario bajo una configuración LAMP?

Por ejemplo, se puede acceder a una página de perfil de usuario de la siguiente manera:

http://www.website.com/profile.php?id=1

Ahora, si un usuario ingresa una "URL vanity" para su perfil, me gustaría que la vanity URL cargue la página anterior.

Por ejemplo, si un usuario selecciona "i.am.a.user" como su vanity URL y su id de usuario en la base de datos es 1, entonces http://www.website.com/profile.php?id=1 sería accesible. por esa URL y http://www.website.com/i.am.a.user .

Soy consciente de las modificaciones de mod en .htaccess, pero no estoy seguro de cómo funcionaría aquí.

Como mencioné, mi sitio está en PHP, MySQL, Linux y Apache.

Gracias.


Primero configure su archivo .htaccess para enviar todas las solicitudes de archivos y directorios que no existen a un solo archivo php:

RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) router.php [NC,L]

Luego, dentro de su router.php, mire $ _SERVER [''REQUEST_URI''] para obtener el nombre de usuario que luego puede usar en su consulta para obtener los datos sobre el usuario.

Esto supone que todas las URL que no son páginas de perfil de usuario existen como archivos físicos en su servidor.

Si ese no es el caso, puede hacer un poco de lógica en el router.php para decidir qué hacer en cada solicitud. Haga una búsqueda en google de enrutamiento url en php y obtendrá muchos ejemplos.


Bueno, podrías resolver esto usando un RewriteMap de apache también, por supuesto. RewriteMap puede ser un archivo de texto sin formato (que actualiza regularmente en función de lo que ingresan sus usuarios) o, alternativamente, puede apuntarlo a un script (Perl, PHP, lo que más le convenga) para hacer la reescritura por usted.

Para obtener un resumen rápido sobre cómo configurar esto usando PHP, consulte Usar una base de datos MySQL para controlar mod_rewrite a través de PHP .


Supongamos que sus otras páginas tienen URL específicas con las que puede comparar, lo siguiente debería ayudar.

RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-zA-Z0-9-_]*)$ /profile.php?user=$1 [L]

Esto ayuda a mantener las URL actuales, al tiempo que permite las URL de acceso directo del usuario. Además, RewriteRule solo coincidirá con las URL que no contengan un / , lo que ayudará a proteger contra los redireccionamientos no intencionales. Asi que,

/i-am-a-user -> MATCHES /i_am_a_user -> MATCHES /i-!am-a-user -> NOT MATCHED /i.am.a.user -> NOT MATCHED /i.am.a.user/ -> NOT MATCHED /some/page/ -> NOT MATCHED /doesnotexist.php -> NOT MATCHED /doesnotexist.html -> NOT MATCHED

Espero que ayude.

EDITAR

Actualicé las reglas anteriores para que los archivos / directorios actuales no sean redirigidos, así como para asegurarme de que ningún archivo .php o .html tampoco se envíe a profile.php .


Reescribir para site.com/user/USERNAME:

En su directorio web raíz, coloque un archivo .htaccess:

RewriteEngine on RewriteRule ^user/(.+)$ profile.php?name=$1 [L]

Esto enruta todas las solicitudes que comienzan con "usuario" a profile.php y pasan el URI a $_GET[''name''] . Este método es preferido si tiene muchos archivos / directorios / otras reescrituras.

Reescriba para site.com/USERNAME:

RewriteEngine on # if directory or file exists, ignore RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)$ profile.php?name=$1 [L]

Esto se dirige a profile.php SOLAMENTE si el archivo o directorio solicitante no existe, Y cuando el URI de solicitud no está vacío (es decir, www.site.com)

Backend de PHP

Ahora en profile.php, puedes tener algo como esto:

if (!empty($_GET[''name'']) $user = ... // get user by username else $user = ... // get user by id