我认为这是一个Apache .htaccess
问题,但也许不是。也许我从错误的角度看问题,因此找不到合适的解决方案。
我正在构建一个网络应用+混合移动应用。我想分享完全相同的代码库,无需手动调整任何内容以将我的应用程序部署到Android或iOS,否则,部署过程将是hacky和痛苦。我想要的是拿起网络应用程序存储库,将其推送到Cordova的框 (你这个坏人;),它会成功部署它。
现在,一个问题是Cordova需要相对路径才能正常工作。例如,这就是我包含require.js
文件的方式:
<script data-main="library/js/dependencies.js" src="library/js/libs/require.js">
</script>
这适用于混合应用程序。这在大多数Web应用程序的URL上也可以正常工作,具有以下方案:
domain.com/view_name
但是,当我从接收URI参数的视图加载应用程序时会发生这种情况:
domain.com/view_name/6iwO4NyJqy
相对路径不再正确解析。由于路径不正确,我得到404 error
。例如,这是如何解决上面的require.js
文件:
http://domain.com/view_name/library/js/libs/require.js
view_name
位是错误的部分。它应该不存在。没有它,文件将被成功找到。
这是我的.htaccess
文件:
RewriteEngine on
RewriteBase /
# REROUTING EVERYTHING TO index.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule .* /index.html [NC,L,QSA]
有没有办法设置我的.htaccess
文件,这样我就不需要修改应用程序中的相对路径,仍然可以正确解析它们?
任何建议都是最受欢迎的。
答案 0 :(得分:1)
这不是由您的重写规则引起的,而是由于您使用了相对路径。
您可以在页面HTML的<head>
部分下方添加:
<base href="/" />
以便从该基本网址解析每个相对网址,而不是从当前网页的网址解析。