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

The CheckSpelling On (mod_speling) works fine when it’s www.example.com. But it does not work when the Rewrites take place. For example there is a /home/test/www/index.html file. If you do test.example.com/INDEX.html it will not fix to test.example.com/index.html but if you do www.example.com/INDEX.html (there is no /home/www/ folder) it will fix it to www.example.com/index.html.

It seems like it processes through the mod_rewrite first and if it uses rewrite, it doesnt go through checkspelling. I have tried loaded the modules in different orders with no luck.

MrWhite
  • 43,179
  • 8
  • 60
  • 84
Brian
  • 21
  • 2

2 Answers2

0

mod_speling can't look for spelling alternatives that go through mod_rewrite rules. It should work if you use use a redirect [R], but it looks like you want to hide the actual directories.

You might consider a custom 404 instead of mod_speling.

Jeremy Stein
  • 19,171
  • 16
  • 68
  • 83
  • Strange. I had a setup that was working 6 months ago, I forgot how or what I did. Since then I have lost 50% of what I had customized ;[ – Brian Dec 30 '09 at 19:19
0

mod_speling and mod_rewrite operate in the same phase when rewrite is used in per-directory context ( or htaccess). This phase runs all participating modules, not the first to take any action.

rewrite in per-directory always acts as if it has the [PT] flag. If your rewrites are not in per-directory context, just add the [PT] flag and use URI's instead of filenames in your substitutions will probably get them interoperating.

covener
  • 17,402
  • 2
  • 31
  • 45