我做了一个小型的Polymer移动应用程序 . 我将build / bundled文件夹(部署文件)复制到具有Ubuntu和apache2的机器上 .
根是通常的var / www / html . 有一个index.html文件,然后是一个/ src文件夹,其中所有其他接口(htmls)都使用Polymer构建 .
目录的安全模型:
<Directory /var/www/>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
在Polymer上,我在大多数页面上配置了app-route,如下所示:
<app-location route="{{route}}"></app-location>
<app-route
route="{{route}}"
pattern="/:page"
data="{{routeData}}"
tail="{{subroute}}"></app-route>
有些页面是这样的:
<app-route route="{{route}}"
pattern="/:recordid"
data="{{routeData}}"></app-route>
这是与Polymer一起使用的基本页面路由,查找要显示的页面的名称 . 所以用它导航看起来像这样:
domain.com
domain.com/vehicles
domain.com/vehicles/id_of_the_vehicle
domain.com/customers
除了第一个(index.html)之外,所有其他页面都在/ src文件夹中 .
这一切都很好,直到我刷新其中一个页面 . 例如,Chrome上的“下拉到刷新”功能会自动刷新页面 . 例如,当刷新发生时,服务器会尝试查找“/ vehicles”文件,并显示404错误,因为根文件夹中没有此类文件 . 这是在Polymer的app-route组件上使用的路由,用于指示要查找的文件...
所以我想我需要将每个请求视为'index.html',因为此文件指向具有所有app-route配置的另一个文件(my-app.html)...客户端应该处理所有路由 . 这是正确的吗?我怎样才能做到这一点?我应该尝试使用Node.js中的Express作为Web服务器而不是apache吗?
如果我使用本地聚合物服务器(聚合物服务--params)运行应用程序用于测试目的,它一切正常,刷新和所有 .
2 回答
就像我怀疑的那样,我不得不将每个请求(除了root'/')视为index.html
所以根文件夹上的一个简单的.htaccess解决了它:
如果你使用vhosts,那么你必须在重写条件前加上文档根,如下所示: