Estoy tratando de habilitar el manejo directo de URL en mi aplicación Flutter. Estoy usando beamer y la aplicación funciona como se esperaba con enlaces profundos dentro de un emulador de aplicaciones, y cuando uso el emulador de navegador web Chrome a través de vscode.
Sin embargo, cuando publico el código, solo funciona la página principal. Acceder directamente a la url no lo hace.
Cuando vuelvo a la estrategia /#/, todo funciona y puedo acceder a cualquier parte de la aplicación directamente.
Esto significa que la aplicación no está cargada y solo el servidor web Apache devuelve un 404 porque no reconoce index.html del archivo flutter jS como un cgi.
Hace un tiempo trabajé con php y había una manera de acceder a las URL sin usar extensiones y una anulación en la configuración de httpd.conf.
¿Alguien ha hecho que esto funcione para la navegación flutter 2.0 compilada para la web en un servidor web apache?
Gracias
cree un archivo .htaccess en el directorio raíz:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.html [L] </IfModule>Edite httpd.conf para ese directorio raíz:
DocumentRoot "/Users/myname/myapp/build/web" <Directory "/Users/myname/myapp/build/web"> Options FollowSymLinks AllowOverride All Order allow,deny allow from all </Directory>Visita: yoursite.com/path/to/flutter/page o donde tengas un analizador de rutas