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 Onmod_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

当在每个目录上下文(或 htaccess)中使用 rewrite 时,mod_speling 和 mod_rewrite 在同一阶段运行。这个阶段运行所有参与的模块,而不是第一个采取任何行动的模块。

rewrite in per-directory 总是表现得好像它有 [PT] 标志。如果您的重写不在每个目录的上下文中,只需添加 [PT] 标志并在您的替换中使用 URI 而不是文件名可能会使它们互操作。

于 2010-01-02T15:57:41.373 回答
0

mod_speling无法寻找通过mod_rewrite规则的拼写替代方案。如果您使用重定向 [R],它应该可以工作,但看起来您想要隐藏实际目录。

您可能会考虑使用自定义 404 而不是 mod_speling。

于 2009-12-30T17:22:10.790 回答