1

exampleapp.com/clientapp/でindex.phpを実行したい/usr/local/apache/htdocs/clientapp

このスタックオーバーフローの質問は、私がやりたいことに似たものを概説しています: 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 パスと間違えているだけのようです (方法はわかりません)。いずれにせよ、次の 2 つのいずれかを行うことができます。

  1. ファイル パスに末尾のスラッシュを追加します。

    Alias /clientapp/ "/usr/local/apache/htdocs/clientapp/"
    
  2. URI パスから末尾のスラッシュを削除します。

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

どちらもうまくいくようですが、(末尾のスラッシュがない) の要求に一致するため、2 番目のオプションを実行することをお勧めしますexampleapp.com/clientapp。mod_dir はそれをディレクトリとして適切に認識し、にリダイレクトしますexampleapp.com/clientapp/。一方、最初のオプションを選択すると、 に移動するとexampleapp.com/clientapp404 が返されます (または、ドキュメント ルート内の何かがそれを処理することになります)。

于 2012-09-18T20:32:23.207 に答える
0

その中にすべてを変更<Directory ...>...</Directory>して保持します。<Location /clientapp>...</Location>

于 2012-09-18T21:12:38.920 に答える