2
    CheckSpelling On

    RewriteEngine   on
    RewriteCond     %{HTTP_HOST}                      ^([^.]+)\.example\.com$
    RewriteCond     /home/%1/                          -d
    RewriteRule     ^(.+)                              %{HTTP_HOST}$1
    RewriteRule     ^([^.]+)\.example\.com/media/(.*)     /home/$1/data/media/$2
    RewriteRule     ^([^.]+)\.example\.com/(.*)           /home/$1/www/$2

CheckSpelling On(mod_speling) は の場合に正常に動作しますwww.example.com。ただし、書き換えが行われると機能しません。たとえば、/home/test/www/index.htmlファイルがあります。実行するtest.example.com/INDEX.html と に修正されませんtest.example.com/index.html が、実行するとwww.example.com/INDEX.html(/home/www/フォルダがありません) に修正されwww.example.com/index.htmlます。

最初に mod_rewrite を処理しているようで、rewrite を使用すると、スペル チェックを実行しません。モジュールをさまざまな順序でロードしようとしましたが、うまくいきませんでした。

4

2 に答える 2

0

mod_spelingmod_rewriteルールを通過するスペルの代替を探すことはできません。リダイレクト [R] を使用すれば機能するはずですが、実際のディレクトリを非表示にしたいようです。

mod_speling の代わりにカスタム 404 を検討することもできます。

于 2009-12-30T17:22:10.790 に答える
0

mod_speling と mod_rewrite は、rewrite がディレクトリごとのコンテキスト (または htaccess) で使用される場合、同じフェーズで動作します。このフェーズでは、最初にアクションを実行するモジュールではなく、参加しているすべてのモジュールを実行します。

ディレクトリごとの書き換えは、常に [PT] フラグがあるかのように機能します。書き換えがディレクトリごとのコンテキストにない場合は、[PT] フラグを追加し、置換でファイル名の代わりに URI を使用するだけで、おそらく相互運用性が得られます。

于 2010-01-02T15:57:41.373 に答える