1

展開しようとしているサイトで問題に直面しています。サイトは開発ホストで正常に動作していますが、展開に失敗します。両方のホストの構成は非常に似ており、どちらも Ubuntu Linux ディストリビューション (dev: 11.10、デプロイ: 10.04) であり、どちらも apache2 を使用するなどです。

両方のサイトで mod_dir が有効になっていますが、展開サイトではディレクトリ名に末尾のスラッシュが追加されていないようですが、開発サイトでは追加されています。したがって、この URL を入力すると (ばかげたスタックオーバーフローのアンチスパム フィルタリングを避けるために http を削除しました):

devel.mydomain.com/admin

開発ホストはそれを次の場所にリダイレクトします。

devel.mydomain.com/admin/

展開http://mydomain.com/adminでは、不明な理由で mydomain.com/admin/ にリダイレクトされず、404 エラーで終了します。もちろん、mydomain.com/admin/手動で末尾のスラッシュを追加して入力すると、期待どおりに機能します。しかし、私はむしろリダイレクトするのも好きmydomain.com/adminですmydomain.com/admin/

問題は、開発中の mod_dir がリダイレクトを行っているように見え、展開ではそうでない理由です。

DirectorySlash ディレクティブがどこかで無効になっていて、何も見つからないかどうかを確認するために、構成ファイル内で grep を実行しました。develでは明示的に有効になっていないので、デフォルトでオンにする必要があると思います。とにかく、これを展開ホストの .htaccess ファイルに追加します。

ディレクトリスラッシュオン

しかし、それもうまくいきませんでした。

ヒントはありますか?

4

1 に答える 1

0

/adminフォルダはパスワードで保護されています。私はこれが関連しているとは思わなかったが、実際にはそうである.

.htaccessまた、ファイルには次のルールがあります。

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule .* index.php [L]
    </IfModule>

問題はこれに関連しています-良い説明については、こちらを参照してください。

基本的に、Apache が 401 エラーを生成してブラウザーにパスワードを要求すると、フォルダー、ディレクトリ、またはシンボリック リンクを使用しない別の要求も生成されるため、index.php.

.htaccess回避策は、これをサイトのルート フォルダーのファイルに追加することです。

ErrorDocument 401 /error/null.html
ErrorDocument 403 /error/null.html

たとえば、次のようにそのファイルを作成します。

touch ./error/null.html

これらはベスト プラクティスではありませんが、私がより良い解決策を探している間は、これで十分です。

于 2012-01-23T11:08:44.560 に答える