【发布时间】:2015-05-13 15:59:02
【问题描述】:
所以在 localhost 中工作时,我有以下文件夹结构
/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 的任何想法?
【问题讨论】:
标签: javascript apache .htaccess api backbone.js