1

我想exampleapp.com/clientapp/在中执行 index.php /usr/local/apache/htdocs/clientapp

这个stackoverflow问题概述了类似于我想做的事情:https ://stackoverflow.com/a/8454/173630

我在让这个工作时遇到了一些麻烦。这是我的 VirtualHost 设置的开始:

<VirtualHost exampleapp.com:80>

DocumentRoot /home/platform/src/serverapp/public

RewriteEngine On

Alias /clientapp/ "/usr/local/apache/htdocs/clientapp"
<Directory "/usr/local/apache/htdocs/clientapp">
    FallbackResource index.php
    <IfModule mod_suphp.c>
        suPHP_UserGroup nobody nobody
    </IfModule>
</Directory>

RewriteRule ^/clientapp/(.*)$ /clientapp/$1 [PT]

我正在使用 Apache 2.2.22。我知道这是一种令人困惑的设置——我这样做的原因是为了避免从 clientapp 到 serverapp 的跨域 AJAX 请求。

使用此配置,我没有收到任何错误,它只是落入服务器应用程序。

更新 问题是我在 上设置了 BasicAuth /usr/local/apache/htdocs/clientapp,并且在访问时没有提示输入密码exampleapp.com/clientapp/,它只是默默地失败了。我现在取下了 BasicAuth,让它工作。

4

2 回答 2

2

在尝试了一些事情之后,看起来这只是 mod_alias 被延迟了,要么盲目地将文件路径和 URI 路径混合在一起,要么将文件路径 ( /usr/local/apache/htdocs/clientapp) 误认为 URI 路径(不确定如何)。无论哪种方式,您都可以做两件事中的一件,看起来像。

  1. 在文件路径中添加一个斜杠:

    Alias /clientapp/ "/usr/local/apache/htdocs/clientapp/"
    
  2. 从 URI 路径中删除尾部斜杠:

    Alias /clientapp "/usr/local/apache/htdocs/clientapp"
    

两者似乎都可以解决问题,但我建议使用第二个选项,因为它会匹配对exampleapp.com/clientapp(没有尾随斜杠)的请求,并且 mod_dir 会正确地将其识别为目录并将您重定向到exampleapp.com/clientapp/. 而如果您选择第一个选项,则只exampleapp.com/clientapp会给您一个 404(或文档根目录中的某些内容最终会处理它)。

于 2012-09-18T20:32:23.207 回答
0

更改<Directory ...>...</Directory><Location /clientapp>...</Location>保留其中的所有内容。

于 2012-09-18T21:12:38.920 回答