Así que tengo una aplicación de reacción de una sola página que estoy alojando en cpanel. Tengo un problema bastante común por lo que he estado investigando, pero ninguna de las publicaciones en SO me ha ayudado hasta ahora.
Estoy usando React Router, que sé que es puramente enrutamiento del lado del cliente. El problema es que cuando el usuario actualiza la página en una URL como https://example.com/privacypolicy , aparece el error 404 Not Found .
Mi estructura de carpetas en cpanel es la siguiente:
home/mysite public_html all the folder from build folder (after npm run build locally) index.html(important for the post) .htaccess(important for the post)El archivo htaccess es el siguiente:
RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.html [L]Tenía la esperanza de que esto redirigiría todas las solicitudes a index.html y, por lo tanto, reaccionar sabría qué componente representar una vez que se haya redirigido.
No lo es y estoy un poco perdido en lo que estoy haciendo mal.
Cualquier ayuda es apreciada :)
Para alojar el sitio web de ReactJS en cPanel , es importante usar el atributo de homepage de inicio en su package.json . Por ejemplo, puedes usar:
"homepage": "http://example.tld" Una vez que haya terminado de configurar el atributo de la homepage de inicio, ejecute el comando de compilación npm para compilar su código.
npm run build Este comando generará una carpeta llamada build en la carpeta raíz de su proyecto. Luego cargue el contenido de la carpeta de build en cPanel y use la siguiente configuración de archivo .htaccess .
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.html$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule . /index.html [L] </IfModule>