开发者

mod_speling & mod_rewrite to work together?

开发者 https://www.devze.com 2022-12-15 05:54 出处:网络
CheckSpelling On RewriteEngineon RewriteCond%{HTTP_HOST}^([^.]+)\\.example\\.com$ RewriteCond/home/%1/-d
    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/(.*)        开发者_Go百科   /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.


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.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号