CheckSpelling On
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.site\.com$
RewriteCond /home/%1/ -d
RewriteRule ^(.+) %{HTTP_HOST}$1
RewriteRule ^([^.]+)\.site\.com/media/(.*) /home/$1/data/media/$2
RewriteRule ^([^.]+)\.site\.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
。< / p>
它似乎首先通过mod_rewrite处理,如果它使用重写,它不会通过检查。我试过以不同的顺序加载模块而没有运气。
答案 0 :(得分:0)
mod_speling
无法查找符合mod_rewrite
规则的拼写替代方案。如果你使用重定向[R]它应该工作,但看起来你想要隐藏实际的目录。
您可以考虑自定义404而不是mod_speling。
答案 1 :(得分:0)
mod_speling和mod_rewrite在相同的阶段运行。此阶段运行所有参与模块,而不是第一个采取任何操作的模块。
每个目录中的重写始终就像它具有[PT]标志一样。如果您的重写不在每个目录上下文中,只需添加[PT]标志并在您的替换中使用URI而不是文件名可能会使它们互操作。