mod_speling & mod_rewrite 可以一起工作吗?

发布于 2024-08-16 05:06:26 字数 879 浏览 9 评论 0原文

    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 进行处理,如果它使用重写,则不会经过拼写检查。我尝试以不同的顺序加载模块,但没有成功。

    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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

过期情话 2024-08-23 05:06:26

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

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

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.

少跟Wǒ拽 2024-08-23 05:06:26

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

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文