javascript - 使用 apache 为 js 应用程序及其 api 提供服务

标签 javascript apache .htaccess api backbone.js

因此,在本地主机中工作时,我有以下文件夹结构

/htdocs
    /multikanban      # the js app
    /multikanban-api  # the php api

为了从 js 应用程序向 php api 发出请求,我基本上使用了相对路径。

现在我正在尝试将其部署到我的专用服务器上。我设法让这两个项目在 http://multikanban.com 下运行(应用程序)和 http://api.multikanban.com (API)。但是,从应用程序向 api 发出请求需要 CORS,因为使用子域被视为不是域的一部分。我不想使用 CORS,因为这个 api 只会被应用程序使用。这就是为什么我将 multikanban-api 文件夹移至 multikanban 文件夹并尝试使用相对路径。

到目前为止,我发现问题是由于我的 .htaccess 和 apache 配置造成的。

apache 配置看起来像

#
#  multikanban.com (/etc/apache2/sites-available/multikanban)
#
<VirtualHost *:80>
        ServerAdmin mezood@gmail.com
        ServerName  multikanban.com
        ServerAlias www.multikanban.com

        # Indexes + Directory Root.
        # DirectoryIndex /app/index.html
        DocumentRoot /var/www/multikanban/app/
</VirtualHost>

而应用程序的 .htaccess 看起来像

# html5 pushstate (history) support:

<ifModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !index
    RewriteCond %{REQUEST_URI} !multikanban-api 
    RewriteRule (.*) app/index.html [L]
</ifModule>

这基本上是主干的 Pushstate 工作的配置,但我添加了 RewriteCond 来忽略 multikanban-api,这样 url 就不会被理解为应用程序的路由。

问题在于这个配置http://multikanban.com/multikanban-api将返回未找到。我知道这是因为 DocumentRoot 是/multikanban/app 而不仅仅是/multikanban 造成的。这就是为什么我试图定义

 DocumentRoot /var/www/multikanban/ 
 DirectoryIndex /app/index.html

但这根本不起作用。访问 http://multikanban.com返回 require.js SyntaxError 并且甚至不加载应用程序。

关于如何解决此问题或如何在不使用 CORS 的情况下访问/multikanban-api 的方法,有什么想法吗?

最佳答案

我又想了想,也许你需要做一些像虚拟目录这样的事情? http://w3shaman.com/article/creating-virtual-directory-apache

<IfModule alias_module>
Alias /multikanban-api /htdocs/multikanban-api
</IfModule>

为什么要避免 CORS?

我不知道您的设置在什么方面不起作用,但请取出所有 JavaScript 应用程序,只在主站点上有一个 HTML 页面,并在 API 中内联完成简单的 JavaScript AJAX 调用。

另外使用 Postman 之类的工具来验证 API 是否按预期工作。

基本上不断简化你的堆栈,像 Require 这样的东西可能会妨碍你。让每个部分独立运行,您可能只是想太快地将它们整合在一起。

关于javascript - 使用 apache 为 js 应用程序及其 api 提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28993791/

相关文章:

php - 使用 PHP、AJAX 和 MySQL 检查更新的最快方法

php - .htaccess 重写以问号开头的请求 url

.htaccess - 在 .htaccess 重定向中保留 HTTP/HTTPS 协议(protocol)

PHP 内存不足 - Apache 崩溃?

java - Apache POI 中 .docx 的项目符号列表

apache - 启动Apache2服务(os 5)访问被拒绝

apache - .htaccess 使用 UTF 8 字符重定向 URL

javascript - 你如何为 bool 检查器编写这个 if/else 语句

javascript - 循环遍历在 it block 中创建的数组

javascript - 选中时用线为文本下划线