仅允许相对路径

时间:2016-01-25 14:23:15

标签: apache .htaccess cordova mod-rewrite relative-path

我认为这是一个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文件,这样我就不需要修改应用程序中的相对路径,仍然可以正确解析它们?

任何建议都是最受欢迎的。

1 个答案:

答案 0 :(得分:1)

这不是由您的重写规则引起的,而是由于您使用了相对路径。

您可以在页面HTML的<head>部分下方添加:

<base href="/" />

以便从该基本网址解析每个相对网址,而不是从当前网页的网址解析。