apache - 仅允许相对路径

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

我相信这是 Apache .htaccess 问题,但也许不是。也许我从错误的角度看问题,从而找不到正确的解决方案。

我正在构建一个网络应用程序+混合移动应用程序。我想共享完全相同的代码库,而无需手动调整任何内容即可将我的应用程序部署到 Android 或 iOS,否则,部署过程将变得棘手且痛苦。我想要的是获取网络应用程序存储库,将其插入 Cordova 的盒子(你这个肮脏的人;),然后它就会成功部署它。

现在,一个问题是 Cordova 需要相对路径才能正常工作。例如,这就是我包含 require.js 文件的方式:

<script data-main="library/js/dependencies.js" src="library/js/libs/require.js">
</script>

这在混合应用程序上运行良好。这在大多数网络应用程序的 URL 上也可以正常工作,这些 URL 具有以下方案:

domain.com/view_name

但是,当我从接收 URI 参数的 View 加载应用程序时,会发生以下情况:

domain.com/view_name/6iwO4NyJqy

相对路径不再正确解析。由于路径不正确,我收到 404 错误。例如,上面的 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 文件,这样我就不需要修改应用程序内的相对路径,并且仍然可以正确解析它们?

非常欢迎任何建议。

最佳答案

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

您可以将其添加到 <head> 下面页面 HTML 部分:

<base href="/" />

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

关于apache - 仅允许相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34994903/

相关文章:

linux - 如何查看通过 apache 规则传输的 Web 请求

apache - 想要从 https URL 中删除端口号

java - 在 Java 中从 Solr 服务器中选择数据

apache - 在 Apache 2.4 中链接 URL 重写规则

css - 某种不需要的 div 突出显示 datepicker materialize-css

javascript - AngularJS:使用history.pushState()删除 "#"

php - .htaccess 301 重定向,URL 有不同的标识符

.htaccess - 使用 Wordpress 重写多语言网站的规则

jquery - 关闭 Android 应用 Jquery - Phonegap

javascript - 使用 cordova 编译 iOS 版本时出现问题