• Jobs
  • About Us
  • Jobs
    • Home
    • Jobs
    • Courses and challenges
  • Businesses
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

1.2K
Views
Configuración de .htaccess para aplicaciones React (+Router) dentro de un subdirectorio

Tengo una aplicación React que se encuentra en el directorio mysite.com/admin . Por lo tanto, index.html se encuentra en mysite.com/admin/index.html . La aplicación contiene rutas como /admin/users o /admin/tools/removeUser .

¿Cómo configuro .htaccess para cargar mysite.com/admin/index.html cuando abro mysite.com/admin/ por ejemplo? La url en sí debe permanecer igual para representar la ruta necesaria.

Debería decir que también hay una aplicación React en el directorio raíz. Esto es lo que probé:

 RewriteEngine on RewriteBase / #for app in subdirectory RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^admin admin/index.html [L] #for root app RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule . /index.html [L]

Pero cuando abro mysite.com/admin/tools/removeUser por ejemplo, en la consola aparece este error:

ingrese la descripción de la imagen aquí

¿Qué estoy haciendo mal?

over 3 years ago · Santiago Trujillo
1 answers
Answer question

0

Tienes razón.

Problema potencial.

Cuando se ejecuta en el servidor local, el enrutamiento del nodo JS (los componentes son BrowserRouter, Switch, Route) funciona bien. Abrir enlace directo y recargar página funciona correctamente. Pero cuando se implementa en el servidor web Apache, se inicia el trabajo de la aplicación del componente (porque la página no se recarga), pero cuando se recarga la página, aparece la página 404. La misma página 404 aparece cuando se abre un enlace directo que contiene una parte de la aplicación de ruta. El servidor Appache requiere una configuración correcta en el archivo .httpaccess. Por ejemplo, tengo dos CMS en el servidor apache y uno de ellos es SPA. Mi CMS debería tener reglas y otro sistema como SPA debería tener reglas en .httpaccess

Soluciones posibles:


    Motor de reescritura en
    #para aplicación en subdirectorio
    RewriteBase /admin/
    Regla de reescritura ^index\.html$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    Regla de reescritura ^.*admin/.* /admin/index.html [L]
    #para aplicación raíz
    Reescribir Base /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    Regla de reescritura. /index.html [L]

Es importante que las reglas del subdirectorio de la aplicación no sobrescriban las reglas de la aplicación principal.

over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Show me some job opportunities
There's an error!