No uses .htaccessarchivos

No uses .htaccessarchivos

Estoy intentando acceder a una plataforma social como Instagram o Facebook y quiero mostrar a los usuarios un nombre de usuario como examplesite.com/username aquí en la URL. Estuve investigando cómo hacer esto y descubrí que se hace con códigos de reescritura de htaccess. Tengo un código

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ user.php?url=$1 [QSA,L]

En general, funciona, pero, por ejemplo, cuando quiero ingresar a examplesite.com/login o a la página de registro, rewriterules piensa que la palabra iniciar sesión o registrarse es un nombre de usuario y nunca se abre. Las carpetas deben estar abiertas y también las carpetas css, scss, js, img, etc. en mi servidor deben tomarse como nombre de usuario, por lo que si alguien escribe en examplesite.com/css, img o js, ​​etc. palabras en la URL, no se deben abrir. archivos css, img o js.

Perdón por mi inglés. ¡Gracias a todos! <3

Respuesta1

Varias cosas diferentes:

No uses .htaccessarchivos

Hay numerosos ejemplos bien intencionados de código en .htaccessarchivos que luego son copiados una y otra vez por/paraculto a la cargaadministradores de sistemas eso debería ser leer el manual real.

De:https://httpd.apache.org/docs/2.4/howto/htaccess.html

En general, sólo debes utilizar .htaccessarchivos cuando no tengas acceso al archivo de configuración del servidor principal. Por ejemplo, existe la idea errónea de que la autenticación del usuario siempre debe realizarse en archivos .htaccess y, en años más recientes,Otra idea errónea de que las directivas mod_rewritedebeir en .htaccessarchivos.Esto simplemente no es el caso.
...
En el caso de las directivas RewriteRule, en .htaccesscontextoEstas expresiones regulares deben volver a compilarse con cada solicitud al directorio, mientras que en el contexto de configuración del servidor principal se compilan una vez y se almacenan en caché.Además, las reglas en sí son más complicadas, ya que se deben evitar las restricciones que vienen con el contexto por directorio y mod_rewrite. Consulta elGuía de reescritura para más detalles sobre este tema.

Segundo:

Ya mencionaste un par de nombres de directorio que deberían excluirse de la example.com/[user-alias]asignación.

No olvide también prohibir que las personas seleccionen intencionalmente esos nombres de directorio (y otros) como su alias de usuario en su página de registro.

Último

RewriteCondLas directivas se utilizan para restringir los tipos de solicitudes que estarán sujetas a lo siguiente RewriteRule.

Su configuración actualmente dice, en inglés "simple", no aplique lo siguiente RewriteRulecuando exista un archivo o directorio con el mismo nombre que el componente de nombre de archivo de la solicitud.

Simplemente puede agregar condicionales adicionales con RewriteCondlíneas adicionales, por ejemplo:

RewriteCond %{REQUEST_FILENAME} !"login"

debe excluirexample.com/login

información relacionada