para instalar descargar apache .htaccess reactjs digital-ocean react-router

instalar - El servidor web Apache no me permite actualizar en/about pero en localhost está funcionando bien



instalar apache en centos 7 (2)

He empaquetado uno de mis proyectos y funciona bien. Sin embargo, al pulsar actualizar en una ruta / acerca, muestra La URL solicitada / acerca no se encontró en este servidor ... Sin embargo, cuando lo hago en mi host local en un servidor web, funciona bien en los botones de actualización y avance / retroceso. Estoy usando react-router para el enrutamiento de mi cliente.

Aquí está el enrutamiento del lado del cliente, pero dudo que sea el problema

Router.run(routes, Router.HistoryLocation, function (Handler) { React.render(<Handler/>, app); });

Y mis rutas están ahí:

let routes = ( <Route> <Route name = "App" path="/" handler = {App}> <Route name="About" path="/about" handler = {About}/> <DefaultRoute name="Projects" handler = {Projects}/> </Route> </Route> );

Aquí está la APACHE que creo que rompí:

<Directory /var/www/> # This directive allows us to have apache2''s default start page # in /apache2-default/, but still have / go to the right place Require all granted #RedirectMatch ^/$ /apache2-default/ </Directory>

kkotwal.me.conf:

<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request''s Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. # ServerName kkotwal.me ServerAlias www.kkotwal.me ServerAdmin webmaster@localhost DocumentRoot /var/www/kkotwal.me/public_html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>


En el caso de la transferencia, debe representar la misma vista donde se escriben todas las rutas para el archivo de reacción. La ruta de Laravel se escribe como:

Route :: get (''{url}'', function () {return view (''welcome'');}) -> where ([''url'' => ''. *'']);

El archivo blade de bienvenida es:

<!doctype html> <html lang="{{ app()->getLocale() }}"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Laravel</title> <link href="{{asset(''css/app.css'')}}" rel="stylesheet" type="text/css"> </head> <body> <div id="root"></div> <script src="{{asset(''js/app.js'')}}" ></script> </body> </html>

archivo app.js para ruta

<Route> <Route name = "App" path="/" handler = {App}> <Route name="About" path="/about" handler = {About}/> <DefaultRoute name="Projects" handler = {Projects}/> </Route>

por lo que cada vez que actualice su ruta, mostrará la hoja de bienvenida y sus respectivas rutas en el archivo app.js


Hey esto es en realidad una cosa bastante común.

Lo que está sucediendo es que necesitas que tu servidor apache ignore las rutas anidadas y simplemente envíe todas las solicitudes /* a la raíz. De esa manera, su javascript de front-end puede recoger la ruta en el lado del cliente y mostrar la vista correcta.

Esto se conoce a veces como "Modo HTML5" en diferentes servidores web.

En apache, la forma en que lo haces es agregar una regla como la siguiente:

RewriteEngine On RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR] RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d RewriteRule ^ - [L] RewriteRule ^ /index.html [L]

Lo que esto hace es decirle a Apache que sirva cualquier archivo que exista, pero si no existe, solo sirve /index.html lugar de un 404 no encontrado.