#flutter #apache #dart
Вопрос:
Я пытаюсь включить прямую обработку URL-адресов в своем приложении Flutter. Я использую beamer, и приложение работает, как и ожидалось, с глубокой связью в эмуляторе приложения и при использовании эмулятора веб-браузера chrome через vscode.
Однако, когда я публикую код, работает только главная страница. Прямой доступ к URL-адресу не делает этого.
Когда я переключаюсь обратно на стратегию/#/, все работает, и я могу получить прямой доступ в любое место приложения.
Это означает, что приложение не загружено, и только веб-сервер Apache возвращает 404, потому что он не распознает index.html из файла flutter jS, который должен быть cgi.
Некоторое время назад я работал с php, и был способ получить доступ к URL-адресам без использования расширений и переопределения в настройках httpd.conf.
У кого-нибудь это работает для flutter navigation 2.0, скомпилированной для Интернета на веб-сервере apache?
Спасибо
Ответ №1:
создайте файл .htaccess в корневом каталоге:
<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>
Отредактируйте httpd.conf для этого корневого каталога:
DocumentRoot "/Users/myname/myapp/build/web"
<Directory "/Users/myname/myapp/build/web">
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
Посетите: yoursite.com/path/to/flutter/page или где бы у вас ни был анализатор маршрутов
Комментарии:
1. Спасибо. .htaccess работает на меня.